2017-07-26 26 views
0

我最近從tkinter切換到pyqt4,也許這個問題是重複的,但我找不到工作示例/答案。我有,在我的應用程序,從部件和更新DB.It韋裏工作很好地控制輸入按鈕,但我wan't做才能讓用戶像的Tkinter的.askyesno(或HTML模式),如果他/她肯定該命令。如何銷燬PyQt4中的python小部件

def modal(self): 
     d = QtGui.QDialog() 
     d.setModal(True) 

     b1 = QtGui.QPushButton("ok",d) 
     b1.move(50,50) 
     b1.clicked.connect(lambda event: self.yes(d)) 

     d.setWindowTitle("Dialog") 
     d.setWindowModality(QtCore.Qt.ApplicationModal) 
     d.exec_() 

     print('b1 ans', self.ans) 


def yes(self, d): 
    self.ans = True 
    d.setParent(None) 

現在,當我點擊按鈕,它調用模式的功能,這使得QDialog的與按鈕it.Now我的問題是,由於我設置了setModal(真)程序等待QDialog的退出,但退出只有在小紅色的x /關閉按鈕上,我需要QDialog來退出/刪除/銷燬任何按鈕點擊例如在功能'是'?

是否有可能(我猜是),以及如何。 在此先感謝。

+1

也許試着看看[this](https://www.tutorialspoint.com/pyqt/pyqt_qmessagebox.htm),它可能會有所幫助。 – Matho

+0

太好了。非常感謝。 –

回答

1

你想要什麼是QMessageBox提示提供。這是一個小例子,帶有一個「是」,「否」和「取消」按鈕,您可以提供自定義名稱。

confirm = QtGui.QMessageBox() 
confirm.setWindowTitle("Are you sure?") 
confirm.setText("Please choose an option") 

btnYes = confirm.addButton("Yes", QtGui.QMessageBox.YesRole) 
btnNo = confirm.addButton("No", QtGui.QMessageBox.NoRole) 
btnCancel = confirm.addButton("Cancel", QtGui.QMessageBox.RejectRole) 
confirm.setDefaultButton(btnYes) 
confirm = confirm.exec_()