2016-05-17 11 views
0

私のMainWindowに 'StartButton'というQPushButtonがあります。 Buttonの名前、位置、その他すべてはQtデザイナで定義されているので、私は自分のプログラムに何も定義しません。Python/Qt Designer:自己なしでQPushButtonを受け入れる

self.StartButton.clicked....QtGui.MyMainWindow.StartButton.clicked....のように置き換えます。 selfの代わりに何を書きますか?

class MainWindow(QtGui.QMainWindow, QtGui.QFileDialog): 

    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent) 
     uic.loadUi('MyMainWindow.ui', self) 

     self.StartButton.clicked.connect(MainWindow.do_something()) 
+0

なぜこれをやろうとしていますか?また:動作しません。 'self'は' MainWindow'クラスの*インスタンス*を参照します。あなたはクラスそのものではなく、インスタンスに作用します( 'staticmethod'を除く)。 –

+0

Button、TextEditなどを使って作業すると、 'MainWindow.StartButton .... 'の記述ができないため、他のクラスで問題が発生します(おそらく継承に問題があります)。 –

答えて

0

あなたの行は次のようになります、

  • まず私は括弧を削除:
    self.StartButton.clicked.connect(self.do_something) 
    

    は、私は2つの変更を行いました。 connectの引数として渡すのではなく、do_somethingを呼び出していました。
  • 2番目の変更はMainWindowselfに置き換えています。あなたはこれを避けたいと思っていますが、MainWindowは単なるクラスです。 selfは、接続しようとしているMainWindowのインスタンスです。

注:また、Qtの中に未定義の動作につながる二つの異なるウィジェット(QMainWindowQFileDialog)から継承されます。残念なことに、あなたはどちらかを選ぶか、物事が壊れるでしょう。

+0

良い説明をありがとう! –

関連する問題