我正在使用QtDesign创建自己的UI并将其转换为python版本。因此,在子类的UI python文件之后,我编写了一些函数来为QGraphicsView实现mouseEvent。只是一个小问题。如何调用QGraphicsView的super()函数?
class RigModuleUi(QtGui.QMainWindow,Ui_RiggingModuleUI):
def __init__(self,parent = None):
super(RigModuleUi,self).__init__(parent = parent)
self.GraphicsView.mousePressEvent = self.qView_mousePressEvent
def qView_mousePressEvent(self,event):
if event.button() == QtCore.Qt.LeftButton:
super(RigModuleUi,self).mousePressEvent(event)
看起来super(RigModuleUi,self).mousePressEvent(event)
将返回QMainWindow的mouseEvent,而不是QGraphicsView。所以像rubberBand这样的鼠标的所有其他选项都将丢失。
由于
答案 0 :(得分:0)
我不太清楚你期望在这里发生什么。您正在存储绑定方法。当它被调用时,它仍然会被存储它时使用的self
调用。
您的super
正在走向RigModuleUi
的祖先,该祖先不会继承QGraphicsView
。
self.GraphicsView
是实例属性的有趣名称;是应该是一个类的名称,还是只是偶然资本化? (请关注PEP8 naming conventions。)如果您将方法定义为全局函数并将 分配给实例,也许您会有更多的运气。
def qView_mousePressEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
super(QGraphicsView, self).mousePressEvent(event)
class RigModuleUi(QtGui.QMainWindow, Ui_RiggingModuleUI):
def __init__(self, parent=None):
super(RigModuleUi,self).__init__(parent=parent)
self.GraphicsView.mousePressEvent = qView_mousePressEvent
在这里疯狂地猜测;我不知道PyQt的类层次结构:)