我应该在 PyQt 应用程序中使用 \`app.exec()\` 还是 \`app.exec_()\`?

新手上路,请多包涵

我使用 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 中的语言关键字。但是 官方 PyQt5 文档 中的代码 (特别是 Object Destruction on Exit 部分) 。我看到那个例子显示了 app.exec() 的使用,这让我很困惑。

当我在我的机器上测试它时。我发现我的结局没有任何明显的区别。有和没有 _ 都在没有时间差的情况下产生相同的输出。

我的问题是:

  • 我使用 app.exec() 有什么问题吗?就像与 Python 的内部冲突 exec ?我怀疑是因为 exec 都在执行某些操作。
  • 如果不是,我可以互换使用吗?

原文由 socket 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 955
1 个回答

那是因为在 Python 3 之前, exec 是一个保留关键字,因此 PyQt 开发人员为其添加了下划线。从 Python 3 开始, exec 不再是保留关键字(因为它是一个内置函数;与 print 相同的情况),因此在 PyQt5 中提供一个没有下划线与 C++ 文档保持一致,但保留带下划线的版本以实现向后兼容性。因此,对于带有 Python 3 的 PyQt5,这两个 exec 函数是相同的。对于较旧的 PyQt,只有 exec_() 可用。

原文由 Oliver 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题