【问题标题】:pyqtgraph disable parent widget scrolling while mouse hovering on/is used from sub-widgetpyqtgraph 在鼠标悬停在/从子小部件上使用时禁用父小部件滚动
【发布时间】:2019-11-04 12:45:46
【问题描述】:

我有一个QTreeWidget,其中填充了两个子小部件pyqtgraph.TableWidget() 和一个pyqtgraph.ImageView()。现在我遇到的问题是,当我的鼠标在ImageView 内时,它用于应用不同的操作(例如放大/缩小等),但这会影响QTreeWidget 的滚动。我想做的是当我的鼠标在(悬停?)ImageView 边界内并用于ImageView 功能时禁用QTreeWidget 的滚动。这可能吗?

这是我的小部件结构的一些代码sn-p:

# Tree
self.tree_widget = QtWidgets.QTreeWidget()
self.tree_widget.setHeaderLabels(["Key", "Value", "Image"])
root_item = QtWidgets.QTreeWidgetItem(["Test Item"])
self.tree_widget.addTopLevelItem(root_item)

# Data
val=numpy.random.normal(size=(32, 24, 3))

# Sub-widgets
tableWidget = pyqtgraph.TableWidget(sortable=False)
tableWidget.setData(val)

im1 = pyqtgraph.ImageView()
im1.setImage(val.T)

self.tree_widget.setItemWidget(root_item, 1, tableWidget)
self.tree_widget.setItemWidget(root_item, 2, im1)

【问题讨论】:

    标签: python scroll pyqt pyqt5 pyqtgraph


    【解决方案1】:

    不清楚您遇到的鼠标事件是什么,因为我唯一能想到的就是滚轮事件。

    如果是这种情况,只需创建 ImageViewer 的子类并将其接收到的所有滚轮事件设置为已接受:这样,ImageViewer 将按预期工作,但滚轮事件不会传播到父窗口小部件(树):

    class MyImageView(pyqtgraph.ImageView):
        def wheelEvent(self, event):
            event.accept()
    
        # you can do the same with other mouse events, if that's your issue too
        def mousePressEvent(self, event):
            event.accept()
    
    class YourWidget(QtWidgets.QWidget):
        def __init__(self, *args, **kwargs):
            QtWidgets.QWidget.__init__(self, *args, **kwargs)
            [...]
            im1 = MyImageView()
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      相关资源
      最近更新 更多