Как заказать PyQt Qmessagebox Buttons - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть 4 пользовательских кнопки в моем Qmessagebox, и я хочу, чтобы они были в порядке: (Нет, Маленький, Средний, Большой).

msgbox.setStandardButtons(QMessageBox.Yes | QMessageBox.No | QMessageBox.Ignore | QMessageBox.Retry)
msgbox.setDefaultButton(QMessageBox.Yes)
buttonX = msgbox.button(QMessageBox.Yes)
buttonY = msgbox.button(QMessageBox.No)
buttonZ = msgbox.button(QMessageBox.Ignore)
buttonA = msgbox.button(QMessageBox.Retry)
buttonX.setText("None")
buttonY.setText("Small")
buttonZ.setText("Medium")
buttonA.setText("Large")

result = msgbox.exec_()

В настоящее время кнопка по умолчанию - Qmessagebox.Yes button ("Никто"). Как изменить порядок кнопок, не меняя названия каждой кнопки?

РЕДАКТИРОВАТЬ: я использую python 3.8 и PyQt5

1 Ответ

1 голос
/ 21 апреля 2020

Порядок кнопок предопределен ролями, поэтому возможное решение состоит в том, чтобы удалить кнопку «Средняя» и добавить ее в конце:

# ...
buttonA.setText("Large")

hlay = msgbox.findChild(QHBoxLayout)
litem = hlay.takeAt(3)
w = litem.widget()
if w is not None:
    hlay.addWidget(w)

result = msgbox.exec_()
...