2017-10-31 2 views
1

Ich möchte den Text von der 'Ja' und der 'Nein' Schaltfläche im informativen Text einer QMessageBox zeigen, aber ich sehe nicht, wie ich diese Etiketten bekommen kann die Knöpfe. und die aktuelle SpracheinstellungSystem-Standard-Etiketten von QMessageBox-Standardschaltflächen erhalten

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") 

Durch den Aufruf setStandardButtons, wird der Button um und die Tastenbeschriftungen für das aktuelle Betriebssystem auf Standard festgelegt werden. Wie kann ich diese Standardwerte erhalten, so dass ich sie für die Steckplätze in der Zeichenfolge info_text verwenden kann?

Ich dachte über die Verwendung des buttons Attributs aus dem QMessageBox Objekt, das eine Liste von QPushButton Objekte ist. Ich kann die Etiketten von dort lesen, aber ich sehe nicht, wie ich feststellen könnte, ob das erste Element in der Liste der Yes oder der No Knopf ist.

Antwort

0

Okay, ich war dumm: Neben dem buttons Attribut gibt es auch die button() Methode, die als Argument den Schaltflächentyp verwendet, den ich abrufen möchte. Ich kann dann text() verwenden, um das Etikett zu erhalten. Schließlich muss der Hotkey-Marker & von dem Etikett abgezogen werden:

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)