0

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)QGraphicsViewではなく、QMainWindowのmouseEventを返すように見えます。したがって、rubberBandのようなマウスの他のすべてのオプションは失われます。

ありがとう

4

1 に答える 1

0

あなたがここで何を期待しているのかよくわかりません。バインドされたメソッドを保存しています。self呼び出されると、保存したときと同じように呼び出されます。

あなたは、 から継承していないsuperの祖先を歩いています。RigModuleUiQGraphicsView

self.GraphicsViewインスタンス属性の面白い名前です。それはクラスの名前であるはずですか、それとも偶然に大文字になっているだけですか? ( PEP8 の命名規則に従ってください。) メソッドをグローバル関数として定義し、それをインスタンスに割り当てた方がうまくいくかもしれません。

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のクラス階層を知りません:)

于 2013-02-28T09:11:54.697 に答える