【问题标题】:Problems with PyQt signalsPyQt 信号的问题
【发布时间】:2015-04-21 22:56:38
【问题描述】:

我已经使用 PyQt4 库使用 python 开发了一个应用程序。

嗯,我有很多“连接”来启动一个类的方法,例如,当另一个类的方法完成时(例如self.emit(QtCore.SIGNAL('some_signal(QString, QString)'), string1, string2))。

因此,当我在类的 init 方法中启动信号(如上一段中的信号)时,它会被忽略。但是,如果我创建一个按钮,然后将此按钮连接到一个方法,并在此方法中启动信号,它就可以工作。

谁能解释我为什么并给我一个解决方案来在类的 init 方法中启动信号。

提前致谢!!

亚德里亚

【问题讨论】:

标签: python pyqt pyqt4


【解决方案1】:

__init__ 方法发送信号可以正常工作:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QMainWindow):
    mySignal = QtCore.pyqtSignal()

    def __init__(self):
        super(Example, self).__init__()
        self.initUI()
        print "START - Emit signal from __init__"
        self.mySignal.emit()
        print "END - Emit signal from __init__"

    def initUI(self):
        self.mySignal.connect(self.print_signal)
        self.setGeometry(300, 300, 290, 150)
        self.setWindowTitle('Emit signal')
        self.show()


    def mousePressEvent(self, event):
        self.mySignal.emit()

    def print_signal(self):
        print "Signal emitted"

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

【讨论】:

  • 我已经解决了,问题是我在实例化连接之前发出了信号,然后我的信号在我发出它的那一刻没有连接到任何东西。然后我只是在声明所有信号连接后复制了信号发射线,它按我的预期工作得很好。感谢您的关注!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2016-06-21
  • 2011-08-08
  • 2017-05-10
  • 1970-01-01
相关资源
最近更新 更多