【问题标题】:Tkinter and execute a python file as in IDLETkinter 并像在 IDLE 中一样执行 python 文件
【发布时间】:2015-12-28 18:57:18
【问题描述】:

我最近发现了 Tkinter 及其用途,但它仅在我们从 IDLE 运行时才有效(文件 > 打开 > F5)

我想从 cmd 窗口使用它,但它没有打开 tkinter 窗口和 canevas

有没有办法像 IDLE 那样从 cmd 窗口打开一个 python 文件?

【问题讨论】:

  • 您无需做任何特别的事情。在提示符下输入python /path/to/program.py。你试过吗?如果那“不起作用”,请描述“不起作用”的含义。它会崩溃吗?它会默默退出吗?它运行了,但没有出现窗口吗?
  • 由于 IDLE 在内部使用 Tkinter 本身,因此出现反向问题更为常见。一种可能性是您的代码假定 Tkinter 中的某些内容已初始化,但这仅在从 IDLE 运行时才成立。您到底收到了哪些错误消息?
  • @martineau 默认情况下,也许十年来,IDLE 在通常不使用 tkinter 的单独进程中执行代码。但是,即使在不需要时,它也会导入 tkinter,这可能会影响代码运行。 (我计划在用户代码启动后仅在需要时导入 tkinter。)
  • @TerryJanReedy:说实话,自从我第一次开始使用 Python(与你差不多同时)和 Guido 首次发布它以来,我并没有使用多少 IDLE。它自己使用tkinter 是我迅速切换到其他东西的主要原因之一。作为专注于 IDLE 的 CPython 核心开发人员,我建议您优先考虑删除它与用户程序运行的环境的任何交互,否则它作为集成开发环境的有用性将永远受到极大损害(恕我直言),尤其是对于Python 新手——最有可能的用户。

标签: python cmd tkinter execute


【解决方案1】:

IDLE 执行的文件几乎与python -i path/file.py 相同——注意-i。结果是 tkinter 窗口留在屏幕上,并且可以在 file.py 执行停止后与之交互。这对于开发来说真的很方便。您可能必须在命令行中添加-i(如果仍在开发中),或者在程序末尾添加root.mainloop()(或等效项)。 (tkinter 的某些部分在省略 .mainloop 时不起作用,即使在 IDLE 中也是如此,但很多部分都可以。)

在 3.x 中,可以编写在 IDLE 中工作但在命令行失败的导入。但是你没有提到得到 ImportError 回溯。

如果这些都不是您的问题,请创建并发布一个真正的 minimal working example,以及 Bryan 问题的答案。

【讨论】:

    猜你喜欢
    • 2020-02-21
    • 2015-09-15
    • 2021-06-26
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多