Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 子GUI不';当在父pyqt中使用waitcondition时,不会显示_Python_Python 3.x_Pyqt_Pyqt4_Qmutex - Fatal编程技术网

Python 子GUI不';当在父pyqt中使用waitcondition时,不会显示

Python 子GUI不';当在父pyqt中使用waitcondition时,不会显示,python,python-3.x,pyqt,pyqt4,qmutex,Python,Python 3.x,Pyqt,Pyqt4,Qmutex,我是PyQt编码的新手。我正在尝试从父进程启动子进程(GUI)。在本文中,我使用waitcondition和互斥来理解其功能。以下是我的代码: import sys from PyQt4 import QtGui, QtCore waitCondition = QtCore.QWaitCondition() mutex = QtCore.QMutex() class Child(QtGui.QWidget): def __init__(self,ABC=None): super(Ch

我是PyQt编码的新手。我正在尝试从父进程启动子进程(GUI)。在本文中,我使用waitcondition和互斥来理解其功能。以下是我的代码:

import sys
from PyQt4 import QtGui, QtCore
waitCondition = QtCore.QWaitCondition()
mutex = QtCore.QMutex()

class Child(QtGui.QWidget):
 def __init__(self,ABC=None):
    super(Child, self).__init__()

 def startUI(self):
    self.text = QtGui.QLineEdit()
    self.text.returnPressed.connect(self.wakeup)

 def wakeup(self):
    waitCondition.wakeAll()

class Parent(QtGui.QMainWindow):
 def __init__(self, parent=None):
    super(Parent, self).__init__()
    val = 3
    abc = Child(val) 
    abc.startUI()
    mutex.lock()
    waitCondition.wait(mutex)
    mutex.unlock()
    print ("Mutex unlocked")          

def main():
    app = QtGui.QApplication(sys.argv)
    aa = Parent()
    aa.show()
    sys.exit(app.exec_())

if __name__ == "__main__":      
 main()
如果我执行这段代码,它不会启动子GUI,就像我取消注释父类中的waitCondition.wait(mutex)并运行它一样,GUI会显示出来


有人能帮我找出我在这里犯的错误吗?

PyQt使用一个主线程。只有当GUI不忙时,当代码不执行任何操作时,主线程才会刷新GUI


QWaitCondition和QMutex用于线程之间的通信,但您只有一个线程(主线程),因此当您调用waitCondition.wait(互斥)时,您会停止主线程,该线程正在等待“信号”继续。此时主线程正忙,无法刷新gui并显示您的子gui。

PyQt使用主线程。只有当GUI不忙时,当代码不执行任何操作时,主线程才会刷新GUI

QWaitCondition和QMutex用于线程之间的通信,但您只有一个线程(主线程),因此当您调用waitCondition.wait(互斥)时,您会停止主线程,该线程正在等待“信号”继续。此时主线程正忙,无法刷新gui并显示您的子gui