Функционал QRadioButton в окне QMessageBox
Вопрос: Возможно ли в тело QMessageBox встроить функционал QradioButton? Скрипт (radio.py).
Трудности: не получается в тело стандартного окна QMessageBox (с иконкой setIcon() и кнопками) встроить QRadioButton.
Для примера: скрин с окном QMessageBox и встроенным в него QCheckBox.
radio.py
import sys, time
from PyQt5.QtWidgets import (QVBoxLayout, QWidget, QPushButton,
QButtonGroup, QRadioButton, QLabel, QApplication, QMessageBox,
QHBoxLayout)
from PyQt5.QtCore import Qt
class Widg(QWidget):
def __init__(self):
super(Widg, self).__init__()
self.setWindowTitle('Внимание!')
label_tk = QLabel()
label_tk.setText('''
<p>
<img src="smiley.gif" alt="icon face"
width="42" height="42"
style="vertical-align:top">
Необходимо выбрать браузер.
</p>
''')
# !!! +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.label_p = QLabel()
self.check_button = None # !!! +++
self.group = QButtonGroup()
self.rad1 = QRadioButton("Coogle Chrome (рекомендуется)")
self.rad2 = QRadioButton("PhantomJS Driver")
self.btn1 = QPushButton('Старт')
self.btn1.clicked.connect(self.btn1_clicked) # !!! +++
self.btn2 = QPushButton('Отмена')
self.btn2.clicked.connect(self.btn2_clicked)
layout = QVBoxLayout()
layout.addWidget(label_tk, alignment=Qt.AlignCenter)
layout.addWidget(self.rad1)
layout.addWidget(self.rad2)
layout.addWidget(self.label_p)
layoutH = QHBoxLayout()
layoutH.addWidget(self.btn1)
layoutH.addWidget(self.btn2)
layout.addLayout(layoutH)
self.group.addButton(self.rad1)
self.group.addButton(self.rad2)
self.group.buttonClicked.connect(self.group_check_button)
self.setLayout(layout)
# !!! +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
def group_check_button(self, rb):
self.check_button = rb
def btn1_clicked(self):
if not self.check_button:
msg = QMessageBox.information(
self,
'Внимание',
'Вы не сделали выбор?')
return
print(f'Выбран: {self.check_button.text()}')
self.label_p.setText(f'Выбран: {self.check_button.text()}')
time.sleep(1.0)
if self.check_button.text() == "Coogle Chrome (рекомендуется)":
print('Coogle Chrome (рекомендуется)')
# import image_chrome
else:
print('PhantomJS Driver')
# import image
self.close()
# !!! +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
def btn2_clicked(self):
print('Нажата кнопка: отмена')
self.close()
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Widg()
w.resize(250, 250)
w.show()
sys.exit(app.exec_())
