PyQt在组中查找选中的单选按钮

2024-05-23 13:37:46 发布

您现在位置:Python中文网/ 问答频道 /正文

目前正在尝试编写一个函数来从python中的一组radiobutton返回选中的radiobutton,但是到目前为止没有成功。在

PyQt Gui代码:

    self.hlw_customer = QtWidgets.QWidget(self.grb_main)
    self.hlw_customer.setGeometry(QtCore.QRect(110, 26, 361, 21))
    self.hlw_customer.setObjectName("hlw_customer")
    self.hlb_customer = QtWidgets.QHBoxLayout(self.hlw_customer)
    self.hlb_customer.setContentsMargins(0, 0, 0, 0)
    self.hlb_customer.setObjectName("hlb_customer")
    self.rdb_customer1 = QtWidgets.QRadioButton(self.hlw_customer)
    self.rdb_customer1.setObjectName("rdb_customer1")
    self.hlb_customer.addWidget(self.rdb_customer1)
    self.rdb_customer2 = QtWidgets.QRadioButton(self.hlw_customer)
    self.rdb_customer2.setObjectName("rdb_customer2")
    self.hlb_customer.addWidget(self.rdb_customer2)
    self.rdb_customer3 = QtWidgets.QRadioButton(self.hlw_customer)
    self.rdb_customer3.setChecked(True)
    self.rdb_customer3.setObjectName("rdb_customer3")
    self.hlb_customer.addWidget(self.rdb_customer3)
    self.rdb_customer4 = QtWidgets.QRadioButton(self.hlw_customer)
    self.rdb_customer4.setObjectName("rdb_customer4")
    self.hlb_customer.addWidget(self.rdb_customer4)

函数查找选中的单选按钮:

^{pr2}$

但遗憾的是这个返回了[]


Tags: 函数selfcustomerrdbqtwidgetscustomer1customer2setobjectname
2条回答

我也有同样的问题,然后这样想:

import PyQt.QtGui as qg

boxElements = self.MainWindowUI.groupBox.children()

radioButtons = [elem for elem in boxElements if isinstance(elem, qg.QRadioButton)]
        for rb in radioButtons:
            if rb.isChecked():
                checkedOnRb = rb.text()

我喜欢你的解决方案。这是另一个使用findChildren的方法,这要感谢OP解决方案。在

^{pr2}$

我自己找到了解决办法:

    self.find_checked_radiobutton(self.hlw_customer.findChildren(QtWidgets.QRadioButton))

def find_checked_radiobutton(self, radiobuttons):
    ''' find the checked radiobutton '''
    for items in radiobuttons:
        if items.isChecked():
            checked_radiobutton = items.text()
            return checked_radiobutton

相关问题 更多 >