我是一位经验丰富的程序员,但是对Python来说还比较陌生。
我在Raspberry Pi上开发了一个相当复杂的Python程序-在thonny,Raspbian / buster v10中-Python 3.7.3。
它使用tkinter,并且可以正常运行,但是从命令行运行.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
没有错误消息。
答案 0 :(得分:0)
尝试在代码末尾添加root.mainloop()
答案 1 :(得分:0)
Tkinter应用程序需要能够处理稳定的事件流。 Tkinter是单线程的(意味着:一次只能做一件事)。通过创建该无限循环,您使tkinter无法处理任何事件,因此窗口将显示为冻结状态(或根本不显示,因为窗口的绘制本身就是对事件的响应)。
您应该替换您的while
循环,并将其替换为对root.mainloop()
的调用。
答案 2 :(得分:0)
答案并非完全是root.mainloop(),因为它会阻止任何其他代码-但这为我指明了正确的方向,我查看了root.update和root.update_idletasks。
我已经将所有幻灯片/画布更新拉到一个函数中,并添加了update / update_idletasks,它既可以正常运行又可以通过命令行运行。
感谢快速修复!
答案 3 :(得分:0)
尝试使用 pycharm。我刚刚解决了这个问题。我意识到 jupyter 不起作用
答案 4 :(得分:0)
有同样的问题。我试图执行以下命令:$ python PATH_TO_PYTHON_SCRIPT
。这总是失败。启动脚本的正确方法是 $python3 PATH_TO_PYTHON_SCRIPT
。