![](/img/trans.png)
[英]Python script works when I run from IDLE but not in command line?
[英]tkinter not working when run from command line python script
我是一名經驗豐富的程序員,但對 Python 相對較新。
我在 Raspberry Pi 上開發了一個相當復雜的 Python 程序 - 在 thonny、Raspbian/buster v10 - Python 3.7.3 中。
它使用 tkinter,並且在 thonny 中運行良好,但是當從命令行運行 .py 腳本時無法創建任何內容。
我已將程序減少到最低限度,它的行為相同:
:從 thonny 運行它可以工作 - 我得到了 tkinter 窗口
:從 CLI 調用 python3 並單獨輸入命令 - 也有效
但是如果我在腳本(test.py)中運行它,腳本運行良好(我得到輸出)但沒有出現窗口。
import tkinter
root = tkinter.Tk() #produces small window in thonny & python3-line-by-line
#but nothing when the test.py script is run
print ('test") #to prove program is actually running
while 1: #loop to stop program terminating
l=3
沒有錯誤信息。
嘗試在代碼末尾添加root.mainloop()
Tkinter 應用程序需要能夠處理穩定的事件流。 Tkinter 是單線程的(意思是:它一次只能做一件事)。 通過創建該無限循環,您使 tkinter 無法為任何事件提供服務,因此窗口將顯示為凍結(或根本不顯示,因為窗口的繪制本身就是對事件的響應)。
您應該刪除您的while
循環並將其替換為對root.mainloop()
的調用。
答案並不完全是 root.mainloop() ,因為這會阻止任何其他代碼 - 但它為我指明了正確的方向,我查看了 root.update 和 root.update_idletasks 。
我已將所有幻燈片/畫布更新拉到一個函數中,並添加了 update/update_idletasks,它可以在 thonny 和通過命令行運行。
感謝您的快速修復!
嘗試使用 pycharm。 我剛剛解決了這個問題。 我意識到 jupyter 不起作用
有同樣的問題。 我試圖執行以下命令: $ python PATH_TO_PYTHON_SCRIPT
。 這總是失敗。 啟動腳本的正確方法是$python3 PATH_TO_PYTHON_SCRIPT
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.