import sys
from PyQt5.Qt import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setup_ui()
self.user_action()
def setup_ui(self):
self.setWindowTitle("Qt桌面应用程序")
self.resize(300, 300)
# 设置信息显示标签
self.label = QLabel(self)
self.label.move(100, 50)
# 添加单选框
for i in range(2):
# 定义组和组名
self.radio_button_group = QButtonGroup(self)
self.radio_button_group.setObjectName(f"{i + 1}")
# 定义单选框
for j in range(3):
self.radio_button = QRadioButton(f"单选{i + 1}组{j + 1}", self)
self.radio_button.setObjectName(f"{i + 1}_{j + 1}")
self.radio_button.move(20 + j * 80, 100 + i * 50)
# 将单选框加入组中,编号前一位代表组,后一位代表单选框
self.radio_button_group.addButton(self.radio_button, int(f"{i + 1}{j + 1}"))
def user_action(self):
def button_clicked(button_id):
# 获取单选框内容
button_text = self.findChild(QButtonGroup, str(button_id)[0]).button(button_id).text()
self.label.setText(button_text)
self.label.adjustSize()
# 测试:打印组中被被选单选框的ID和内容
print(self.findChild(QButtonGroup, str(button_id)[0]).checkedId(),
self.findChild(QButtonGroup, str(button_id)[0]).checkedButton().text())
# 连接组被点击的信号与槽,指定调用槽函数时传入单选框ID
for i in self.findChildren(QButtonGroup):
i.buttonClicked[int].connect(button_clicked)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())