我使用Python 3和PyQt5。下面是我的測試程序PyQt5,專注於最後兩行:我應該在我的PyQt應用程序中使用`app.exec()`或`app.exec _()`嗎?
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
都在執行某些操作。 - 如果不是,我可以互換使用嗎?
在PyQt5中,根本不需要'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štjanMejak .. hoora爲您的評論和完美!肯定需要更多upvotes!到目前爲止的第一條評論我發現解釋了我在代碼中注意到的這些細微差異。從pyqt4到pyqt5的變化就像學習再讀一樣(不得不承認.. 10年沒有編程讓人有點生疏......而蟒蛇也在引擎蓋下彈出一些趣味球)。 – ZF007
@BoštjanMejak:您確實需要'sys.exit()'否則'app.exit(1)'調用不會導致相應的退出狀態,即使在Python 3和PyQt5上也可以使用'sys.exit(app。 EXEC())'。 – jfs