Raspbian Jessie中的Python脚本在从空闲启动时运行良好,但在通过shell/batch文件从终端启动时自动关闭

Raspbian Jessie中的Python脚本在从空闲启动时运行良好,但在通过shell/batch文件从终端启动时自动关闭,python,python-2.7,tkinter,terminal,raspbian,Python,Python 2.7,Tkinter,Terminal,Raspbian,我希望另一个用户能够运行我的Python应用程序,所以我制作了一个shell/batch文件来启动它。它设置了shebang头、chmod并在终端中正确启动,但是当它不应该关闭时,它关闭(脚本按术语运行)而没有警告 当我在IDLE中打开Python文件并选择Run->runmodule时,它将无限期地运行 我认为这可能是因为当运行中的python脚本在空闲时遇到错误或异常时,异常/错误会显示为红色,以便可以对其进行调试。我的假设是,终端消失得如此之快的原因是,当它遇到它不知道如何处理的事情时,它

我希望另一个用户能够运行我的Python应用程序,所以我制作了一个shell/batch文件来启动它。它设置了shebang头、chmod并在终端中正确启动,但是当它不应该关闭时,它关闭(脚本按术语运行)而没有警告

当我在IDLE中打开Python文件并选择Run->runmodule时,它将无限期地运行

我认为这可能是因为当运行中的python脚本在空闲时遇到错误或异常时,异常/错误会显示为红色,以便可以对其进行调试。我的假设是,终端消失得如此之快的原因是,当它遇到它不知道如何处理的事情时,它会立即退出

让我感到困惑的是,在许多、许多小时的调试过程中,我觉得我已经成功地编写出了脚本可能遇到的任何错误。
我觉得这是真的,因为程序可以连续运行几天,从空闲启动时没有问题。

我怀疑你的mainloop调用有问题,但我们需要看到一个
IDLE
使用
tkinter
所以它执行
mainloop()
运行
IDLE
和你的代码。但通常情况下,您必须将
mainloop()
添加到代码中才能运行它。我使用的是
win.update\u idletasks()
win.update()
而不是
mainloop()
,因为我希望能够刷新StringVars和其他GUI组件,而不必离开按钮单击调用的方法。调用
mainloop()。