python - PyQt QPushButton 信号处理

标签 python pyqt4 signals-slots qpushbutton

我有一个repeat python 函数和一个只有一个按钮的test.ui。我的疑问是如何在每次单击按钮时精确地循环相同的函数一次。因为对我来说,每当我表演时:

self.pushButton.clicked.connect(self.repeat)

它在函数中循环多次,而不是一次。我通过每次到达该函数时增加一个值来发现这一点。如何实现每次点击按钮时重复一次的功能?

import sys
from PyQt4 import QtCore, QtGui, uic

qtCreatorFile = "test.ui"

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)


class Login(QtGui.QMainWindow, Ui_MainWindow):
    i=1
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)

        self.setupUi(self)
        self.pushButton.setText("iam in init")
        self.pushButton.clicked.connect(self.repeat)
    def repeat(self):

        self.pushButton.setText("iam in repeat"+str(self.i))

        self.i=self.i+1

        self.pushButton.clicked.connect(self.repeat)




if __name__ == "__main__":
    app=QtGui.QApplication(sys.argv)
    main = Login()
    main.show()
    sys.exit(app.exec_())

最佳答案

查看您的代码,您已多次建立连接。您应该仅在 __init__ 中使用 self.pushButton.clicked.connect(self.repeat) 建立它,而不是在 repeat() 函数中建立它。换句话说,删除第二个出现的地方(即在 repeat() 中)就可以了。连接应该只建立一次,因为一旦建立,它就会持续到调用它的 disconnect() 或直到 slotsignal 被销毁.

关于python - PyQt QPushButton 信号处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39690243/

相关文章:

python - 最大连续数

python - 在 cython 中编写未知维度的 numpy 代码

python - pyqt : How to use a same function to set text of different qt widget?

python - 如何在 qlistwidget pyqt4 python 中添加带有文本的图像?

qt - 在 QPlainTextEdit 中禁用 'Return' 键

c++ - Qt 信号和槽发送结构数组

c++ - qt 如何通过 connect(Signal,Slot) 将 qshortcut() 的 QkeySequence 传递给函数?

python - 如何匹配实际上是随机的字符串?

python - flask-Python 中的多重路由

python - 如何更改 QTextOption.ShowTabsAndSpaces 使用的字符?