【问题标题】:PyQt QPushButton signal handlingPyQt QPushButton 信号处理
【发布时间】:2016-09-25 18:21:33
【问题描述】:

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

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

它在函数中循环多次而不是一次。我通过每次到达函数时增加一个值来发现这一点。每次点击按钮如何到达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_())

【问题讨论】:

  • 听起来您可能已多次连接信号。在您建立连接的位置显示完整的代码。
  • 我在下面包含了我的代码

标签: python pyqt4 signals-slots qpushbutton


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-11-13
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多