2016-04-07 10 views
0

Может ли кто-нибудь мне объяснить, как мне нравится мой код или что я делаю неправильно? Я хочу использовать кнопку 'btn_run' для запуска функции 'view_splash'. Но что-то не так, но «view_splash» не запускается. Это не показывает мне никаких ошибок.QtCore.SIGNALS не работает над моим кодом

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

Попытка, используя [новый стиль сигналов и слотов] (http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html). Обычно это устраняет такие проблемы. –

ответ

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) 
Смежные вопросы