Python pyqtgraph在鼠标悬停在子小部件上时禁用父小部件滚动

Python pyqtgraph在鼠标悬停在子小部件上时禁用父小部件滚动,python,scroll,pyqt,pyqt5,pyqtgraph,Python,Scroll,Pyqt,Pyqt5,Pyqtgraph,我有一个QTreeWidget,我用两个子小部件填充了它:一个pyqtgraph.TableWidget()和一个pyqtgraph.ImageView()。现在的问题是,当我的鼠标位于ImageView中时,它用于应用不同的操作(例如放大/缩小等),但这会影响QTreeWidget的滚动。我想做的是,当我的鼠标在ImageView边界内(悬停?)并用于ImageView功能时,禁用QTreeWidget的滚动。可能吗 以下是我的小部件结构的一些代码片段: # Tree self.tree_wi

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

以下是我的小部件结构的一些代码片段:

# 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)

现在还不清楚你对什么鼠标事件有意见,因为我唯一能想到的就是滚轮事件

如果是这种情况,只需创建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()