2016-05-17 20 views
0

我有一個QPushButton,在我的MainWindow中名爲'StartButton'。 Button的名字,位置和其他一切都是在Qt Designer中定義的,所以我沒有在我的程序中定義任何東西。Python/Qt設計器:無地址地址QPushButton

我想要的東西,如QtGui.MyMainWindow.StartButton.clicked.... 更換self.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's)。 –

+0

使用按鈕,TextEdits等在其他類中導致問題(也許我有繼承問題),因爲寫'MainWindow.StartButton ....'是不可能的。 –

回答

0

你行應爲:

self.StartButton.clicked.connect(self.do_something) 

我做了兩個變化:

  • 首先,我刪除了括號。您正在撥打do_something,而不是將其作爲參數傳遞給connect
  • 第二個改變是用self代替MainWindow。我意識到你想避免這種情況,但MainWindow只是這個類。 self是您試圖連接到的MainWindow的實例。

注意:您也可從兩個不同的小部件(QMainWindowQFileDialog),這導致了Qt的未定義行爲繼承。不幸的是,你必須選擇一個或另一個,否則事情就會崩潰。

+0

感謝您的好解釋! –