2017-10-31 4 views
1

QMessageBoxの情報テキストに「はい」と「いいえ」ボタンのテキストを表示したいが、どのようにこれらのラベルを得ることができないのか分からないボタン。 setStandardButtonsを呼び出すことにより、QMessageBoxの標準ボタンからシステムデフォルトのラベルを取得

from PyQt5.QtWidgets import * 
import sys 

app = QApplication(sys.argv) 

msgbox = QMessageBox() 
msgbox.setStandardButtons(msgbox.Yes | msgbox.No) 

info_text = "Click '{yes}' to confirm. Click '{no}' to abort." 
msgbox.setInformativeText(info_text) 

if msgbox.exec_() == msgbox.Yes: 
    print("Confirmed") 
else: 
    print("Aborted") 

、ボタンの順序とボタンのラベルは、現在のオペレーティングシステムのデフォルトと現在の言語設定に設定されます。文字列のスロットに使用できるようにこれらのデフォルト値を取得するにはどうすればよいですかinfo_text

QPushButtonオブジェクトのリストであるQMessageBoxオブジェクトのbuttons属性を使用することを考えました。そこからラベルを読むことはできますが、リストの最初の要素がYesNoボタンかどうかを判断する方法がわかりません。

答えて

0

いいえ、私はばかげていました。buttons属性には、button()メソッドもあります。このメソッドは、取り出すボタンの型を引数にとります。私はtext()を使ってラベルを取得することができます。最後に、ホットキーマーカー&をラベルからはがす必要があります。

info_text = "Click '{yes}' to confirm. Click '{no}' to abort.".format(
    yes=msgbox.button(msgbox.Yes).text().replace("&", ""), 
    no=msgbox.button(msgbox.No).text().replace("&", "")) 

msgbox.setInformativeText(info_text) 
関連する問題