2017-07-26 6 views
0

私は最近tkinterからpyqt4に切り替えましたが、おそらくこの質問は重複していますが、実際の例/答えが見つかりません。私は、私のアプリケーションでは、ウィジェットからの入力を制御し、DBを更新するボタンがあります。それはうまく動作しますが、私はtkinterの.askyesno(またはhtmlモーダル)のようなものを作ることを望んでいません。そのコマンド。Pythonでpyqt4のウィジェットを破壊する方法

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) 

私はボタンをクリックしたときに今、それが終了it.Nowに私の問題は、私はQDialogが終了するのsetModal(真の)プログラムが待機設定しているので、あるボタンでQDialogを作るモーダル関数を呼び出し、それ小さな赤いx /閉じるボタンでのみ、QDialogを終了/削除/ボタンをクリックして何でも破壊する必要があります。機能 'はい'ですか?

それは可能でしょうか? ありがとうございます。

+1

[こちら](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_() 
関連する問題