Python的PyQt的QPushButton替换/覆盖方法

问题描述 投票:1回答:1

我有这样的代码:

self.addBtn.clicked.connect(self.add)

if self.added:

    self.addBtn.clicked.connect(self.remove)

但是,当我点击登录按钮,它执行self.add然后self.remove。有没有办法删除/覆盖self.add?谢谢

python qt user-interface pyqt qpushbutton
1个回答
0
投票

我不知道我明白你需要做的,但尝试下面的例子:

import sys
from PyQt5.QtWidgets import (QPushButton, QVBoxLayout, QApplication, 
                             QWidget, QLabel)

class Test(QWidget):
    def __init__(self):
        super().__init__()

        self.flag = True

        self.label  = QLabel()
        self.addBtn = QPushButton("add") 
        self.addBtn.clicked.connect(self.add_remove)        

        vbox = QVBoxLayout(self)
        vbox.addWidget(self.label)
        vbox.addWidget(self.addBtn)

    def add_remove(self):
        if self.flag:
            print("You clicked the button: `add`")
            self.flag = False
            self.addBtn.setText("remove")
            # Do something ...
            self.label.setText("Hello Tom Rowbotham")
        else:
            print("You clicked the button: `remove`")
            self.flag = True
            self.addBtn.setText("add")
            # Do something ...       
            self.label.setText("")            


if __name__ == '__main__':
    app  = QApplication(sys.argv)
    w = Test()
    w.show()
    sys.exit(app.exec_())
© www.soinside.com 2019 - 2024. All rights reserved.