2017-10-31 5 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 특성을 사용하려고 생각했습니다. 거기에서 레이블을 읽을 수는 있지만 목록의 첫 번째 요소가 Yes 또는 No 단추인지 여부를 어떻게 확인할 수 있는지 알 수 없습니다.

답변

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)