0

我正在使用 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)
4

1 回答 1

0

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

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

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

于 2018-04-19T11:56:52.667 回答