2015-11-05 88 views
4

我使用Python 2.7版與PyQT5後執行的功能,這是我的按鈕:單擊OK(QDialogBu​​ttonBox)

self.buttonBox = QtWidgets.QDialogButtonBox(Dialog) 
self.buttonBox.setGeometry(QtCore.QRect(50, 240, 341, 32)) 
self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) 
self.buttonBox.setObjectName("buttonBox") 
self.buttonBox.clicked.connect(Dialog.accept) 
self.buttonBox.rejected.connect(Dialog.reject) 

等....

if __name__ == "__main__": 

app = QApplication(sys.argv) 
window = QDialog() 
ui = Ui_Dialog() 
ui.setupUi(window) 

window.show() 
sys.exit(app.exec_()) 

我怎麼能執行一個功能之後點擊確定?

+1

'window.accepted.connect(some_function)'。 – ekhumoro

+0

謝謝,但似乎:self.buttonBox.clicked.connect(self.function(inParameter))不喜歡參數輸入....我必須使用一個函數,而不需要參數......順便說一句現在還按鈕「取消」運行我的功能....任何解決方案? – rugby82

回答

7

請勿連接到buttonBox.clicked,因爲那將會要求按鈕。

您的按鈕盒的連接應該是這樣的:

self.buttonBox.accepted.connect(Dialog.accept) 
    self.buttonBox.rejected.connect(Dialog.reject) 

要運行的函數/槽當對話框被接受(即單擊OK按鈕,只有當),這樣做:

self.accepted.connect(some_function) 

如果你想傳遞一個參數,使用lambda

self.accepted.connect(lambda: some_function(param)) 
+0

謝謝....爲了給出一個實際的解決方案,下面的代碼很好:self.buttonBox.rejected.connect(Dialog.close) self.buttonBox.accepted.connect(lambda:self.run_command(「tail -f/var/log/syslog「))如果點擊」確定「,這將調用」尾部「命令,如果點擊」取消「 – rugby82

3

您buttonBox設置應該像

self.buttonBox.clicked.connect(Dialog.accept) 
self.buttonBox.accepted.connect(self.accept) 
self.buttonBox.rejected.connect(Dialog.reject) 

其中self.accept是定義爲類的功能。

def accept(self): 

如果你需要一些參數傳遞給需要這些參數存儲到一些類變量,而不是將它們作爲PARAMS到函數的功能。

相關問題