簡體   English   中英

從命令行 python 腳本運行時 tkinter 不工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM