Python 子GUI不';当在父pyqt中使用waitcondition时,不会显示
我是PyQt编码的新手。我正在尝试从父进程启动子进程(GUI)。在本文中,我使用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
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