QtCore.SIGNALS没有处理我的代码

时间:2016-04-07 20:29:03

标签: python pyqt4

有人可以解释我应该如何喜欢我的代码,或者我做错了什么? 我想使用按钮'btn_run'来运行'view_splash'功能。但有些想法会出错,但'view_splash'不会启动。它告诉我没有错误。

import sys
from PyQt4 import QtGui, QtCore
import time


class Window(QtGui.QMainWindow):

 def __init__(self):
    super(Window, self).__init__()
    self.setGeometry(500, 150, 500, 600)
    self.setWindowTitle('Test GUI')

    self.threadclass = AThread()
    self.connect(self.threadclass, QtCore.SIGNAL("view_splash()"), self.view_splash)

    self.home()

 def home(self):
    btn_run = QtGui.QPushButton("Run", self)
    self.threadclass = AThread()
    btn_run.clicked.connect(self.threadclass.start)
    btn_run.resize(120, 40)
    btn_run.move(190, 540)

    self.show()

 def view_splash(self):
    print('test')
    label = QLabel("<font color=red size=10<b>" + "SPLASH" + "</b></font>")
    label.setWindowFlags(Qt.SplashScreen | Qt.WindowStaysOnTopHint)
    label.show()
    QtCore.QTimer.singleShot(5000, label.close)


class AThread(QtCore.QThread):
 def __init__(self):
    super(AThread, self).__init__()

 def run(self):
    print(1)
    print(2)
    time.sleep(5)
    print(3)
    print(4)
    self.emit(QtCore.SIGNAL("view_splash()"))


 app = QtGui.QApplication(sys.argv)
 GUI = Window()
 sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:0)

您需要以不同方式创建和连接信号。

class AThread(QtCore.QThread):
    view_splash = QtCore.pyqtSignal()

    def run(self):
        ...
        self.view_splash.emit()

class Window(QtGui.QMainWindow):

    def __init__(self):
        ...
        self.threadclass.view_splash.connect(self.view_splash)