我使用Python 3和PyQt5。这是我的测试PyQt5程序,重点关注最后两行:
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中的语言关键字。但代码Official PyQt5 Documentation (特别是退出时的对象销毁部分)。我看到这个例子显示使用app.exec()
会让我感到困惑。
当我在我的机器上测试它时。我发现与我的目的没有任何明显的区别。有和没有_
的情况都会在没有时间差的情况下产生相同的输出。
我的问题是:
app.exec()
时有什么不对吗?喜欢与Python的内部exec
发生冲突?我怀疑是因为exec
正在执行某些事情。答案 0 :(得分:44)
那是因为在Python 3 exec
was a reserved keyword之前,所以PyQt开发者为它添加了下划线。从Python 3开始,exec
是no longer a reserved keyword(因为它是内置函数;与print
相同的情况),因此在PyQt5中提供没有下划线的版本是一致的使用C ++文档,但保留带下划线的版本以实现向后兼容性。因此对于使用Python 3的PyQt5,两个exec
函数是相同的。对于较旧的PyQt,只有exec_()
可用。
答案 1 :(得分:6)
关于是否优先选择其中一个问题:使用exec_
意味着如果您决定添加对PyQt4和/或Python> = 2.6的支持,那么您可以少担心一件事保持单一的代码库。