我使用Python 3和PyQt5。这是我的测试PyQt5程序,重点关注最后2行:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
class window(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.setWindowTitle('test')
self.resize(250,200)
app=QApplication(sys.argv)
w=window()
w.show()
sys.exit(app.exec())
#sys.exit(app.exec_())
我知道 exec
是Python中的关键字。但在PyQt5官方文档中的代码 (特别是退出时的对象销毁部分),我看到了使用 app.exec()
的示例,这让我感到困惑。
当我在我的机器上测试时,我发现两者没有任何可见的区别。无论是否有下划线,输出结果都相同,也没有时间差异。
我的问题是:
- 当我使用
app.exec()
时,是否存在错误? 是否与Python内部的exec
冲突? 我怀疑这是因为两个exec
都在执行某些内容。 - 如果没有问题,我可以随意使用它们吗?
sys.exit()
。只需使用app.exec_()
或app.exec()
即可正常运行。他们在PyQt5中进行了一些修复,因此您不再需要sys.exit()
。如果您想让代码在PyQt4上运行,则需要在那里使用sys.exit()
。另外,app.exec_()
和app.exec()
是可以互换的,因此您可以使用任何一个。如果您想让您的代码在PyQt4上正常运行,请坚持使用app.exec_()
。因此,要让您的代码在PyQt5 和 PyQt4上正常工作,请使用sys.exit(app.exec_())
。 - Boštjan Mejaksys.exit()
,那么调用app.exit(1)
将无法产生相应的退出状态。即使在Python 3和PyQt5中也是如此,应该使用sys.exit(app.exec())
。请注意保留原意并尽量通俗易懂。 - jfs