【问题标题】:Multiple QRadioButton error多个 QRadioButton 错误
【发布时间】:2018-09-29 19:33:45
【问题描述】:

我正在使用 PyQt5 创建一个程序。我创建了 3 个单选按钮,但是当我检查第一个按钮并在此之后检查第二个按钮时。该程序将运行连接到这些按钮的两个功能。我怎样才能让它只运行连接到该按钮的功能。谢谢。

def __init__(self):
    super(Program, self).__init__()
    self.ui = Ui_APIManager()
    self.ui.setupUi(self)
    self.show()
    self.ui.add_btn.toggled.connect(self.start)
    self.ui.check_btn.toggled.connect(self.start)
    self.ui.delete_btn.toggled.connect(self.start)

def start(self):
    if self.ui.add_btn.isChecked():
        self.ui.third_lbl.setEnabled(True)
        self.ui.first_lbl.setText('Tool name')
        self.ui.second_lbl.setText('ID')
        self.ui.third_lbl.setText('Username')
        self.ui.action_btn.clicked.connect(self.add_user)

    elif self.ui.check_btn.isChecked():
        self.ui.first_lbl.setText('Type of search')
        self.ui.second_lbl.setText('Keyword')
        self.ui.third_lbl.setEnabled(False)
        self.ui.action_btn.clicked.connect(self.check_user)

    elif self.ui.delete_btn.isChecked():
        self.ui.first_lbl.setText('Type of search')
        self.ui.second_lbl.setText('Keyword')
        self.ui.third_lbl.setEnabled(False)
        self.ui.action_btn.clicked.connect(self.delete_user)

【问题讨论】:

    标签: python pyqt pyqt5 qradiobutton


    【解决方案1】:

    Qt 信号可以有多个插槽。每次单击按钮时,start 函数都会向action_button.clicked 信号添加另一个连接。

    您需要先从信号断开任何现有插槽,以实现所需的行为。您可以通过调用disconnect() 函数一次性断开所有与self.ui.action_btn 的连接。

    与其尝试重新分配已创建的 GUI 元素的角色,不如创建包含每个复选框状态元素的单独小部件并在它们之间切换。您可能会发现 QStackedWidget 很有用。

    【讨论】:

    • 感谢您的回答,但我可以将self.ui.action_btn.disconnect() 放在哪里。我尝试在self.ui.action_btn.clicked.connect(self.add_user) 下方添加,但是当我单击“确定”按钮时,没有任何反应。
    • 您可以将其放在示例中start 函数的开头。
    • 您需要在连接新插槽之前添加它,否则它也会删除该连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2020-03-17
    • 2020-01-22
    相关资源
    最近更新 更多