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