Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.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 PyQt:“;属性错误:';PlayerWindow';对象没有属性';行政长官'&引用;打开第二个窗口时_Python_Pyqt_Pyqt5 - Fatal编程技术网

Python PyQt:“;属性错误:';PlayerWindow';对象没有属性';行政长官'&引用;打开第二个窗口时

Python PyQt:“;属性错误:';PlayerWindow';对象没有属性';行政长官'&引用;打开第二个窗口时,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我正在使用PyQt5编写GUI。在某个时刻,我试图从主窗口打开辅助窗口。我的第二个窗口是一个类PlayerWindow.PlayerWindow继承自QWidget。打开窗口的代码行是: newWindow = PlayerWindow.PlayerWindow( self.playerUrl) newWindow.show() newWindow.exec_() 代码按我希望的方式运行,但我收到错误消息: AttributeError:“PlayerWindow”对象没有属性“exec” 我

我正在使用
PyQt5
编写GUI。在某个时刻,我试图从主窗口打开辅助窗口。我的第二个窗口是一个类
PlayerWindow.PlayerWindow
继承自
QWidget
。打开窗口的代码行是:

newWindow = PlayerWindow.PlayerWindow( self.playerUrl)
newWindow.show()
newWindow.exec_()
代码按我希望的方式运行,但我收到错误消息:

AttributeError:“PlayerWindow”对象没有属性“exec”

我怎样才能避免呢?

好的,我发现了我的错误。 如果不作为主窗口实例的属性存储,则该窗口将被垃圾回收。因此,改为:

self.newWindow = PlayerWindow.PlayerWindow( self.playerUrl)
self.newWindow.show()

exec
行导致了一个禁止垃圾收集的异常。

exec_()是QCoreApplication的一个函数,您需要实例化一个QApplication,例如@λuser:我正在为主窗口实例化一个QApplication。我应该为每个新窗口实例化一个新窗口吗?对不起,不,您应该只有一个
QApplication
的实例,但是
exec
不是
QWidget
的方法,而是
QApplication
的方法:
qApp.exec()
exec()
用于模式小部件,例如。,对话框-在关闭小部件之前,它一直处于控制状态。我猜您没有这样做,因此只需
show()
就足够了,您只需删除
exec()
。您必须将对窗口的引用存储在某个位置,以避免收集和销毁,可能是
self.player=newWindow