2016-04-07 10 views
0

私のコードがどのようにすべきか、間違っているのか、誰かが私に説明することができますか? 'view_splash'機能を実行するには、 'btn_run'ボタンを使用します。しかし、何かが間違っていますが、 '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) 
関連する問題