从 QMessageBox 标准按钮获取系统默认标签
Get system-default labels from QMessageBox standard buttons
我想在 QMessageBox
的信息文本中显示来自 'Yes' 和 'No' 按钮的文本,但我不知道如何获得这些标签来自按钮。
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")
通过调用 setStandardButtons
,按钮顺序和按钮标签将设置为当前操作系统和当前语言设置的默认值。我怎样才能获得这些默认值,以便我可以将它们用于字符串 info_text
?
中的插槽
我考虑过使用 QMessageBox
对象的 buttons
属性,它是 QPushButton
对象的列表。我可以从那里读取标签,但我不知道如何确定列表中的第一个元素是 Yes
还是 No
按钮。
好吧,我是愚蠢的:除了 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)
我想在 QMessageBox
的信息文本中显示来自 'Yes' 和 'No' 按钮的文本,但我不知道如何获得这些标签来自按钮。
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")
通过调用 setStandardButtons
,按钮顺序和按钮标签将设置为当前操作系统和当前语言设置的默认值。我怎样才能获得这些默认值,以便我可以将它们用于字符串 info_text
?
我考虑过使用 QMessageBox
对象的 buttons
属性,它是 QPushButton
对象的列表。我可以从那里读取标签,但我不知道如何确定列表中的第一个元素是 Yes
还是 No
按钮。
好吧,我是愚蠢的:除了 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)