有人可以解释我应该如何喜欢我的代码,或者我做错了什么? 我想使用按钮'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_())
答案 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)