【问题标题】:How are you supposed to start Tkinter?你应该如何启动 Tkinter?
【发布时间】:2016-10-29 01:04:07
【问题描述】:

我很难让我的 Cygwin 安装的 Tkinter 工作。它似乎比任何教程显示的要复杂得多,这让我怀疑我是否用错了。

这是我的“Hello, world”程序。

#!/usr/bin/python
import os
import tkinter as tk

os.environ['DISPLAY'] = ':0'

root = tk.Tk()
frame = tk.Frame(root)
frame.pack()
label = tk.Label(frame, text="Hey there.")
label.pack()
quitButton = tk.Button(frame, text="Quit", command=frame.quit)
quitButton.pack()
root.mainloop()

所以要运行这个程序,我必须初始化 X11,对吗? (为什么在任何教程中都没有提到这部分?)所以我用 Cygwin 安装了 X11。

为了初始化 X11,我尝试在控制台中使用命令“bash startxwin”,如 here 所示,但我只是收到错误“bad “add” command line”

所以我使用了命令“xwin”,它创建了一个巨大的黑色窗口。运行我的程序会使窗口变为appear in the corner。但我希望它出现在自己的窗口中。

这显然不是我认为的简单库。感觉很深奥。我是不是做错了什么?

【问题讨论】:

  • 我很确定你不需要 X11 或 Cygwin 来使用 Tkinter——我在 Windows/一些类 Unix 系统(OS X、Ubuntu)上使用过 Tkinter,但从未处理过.尝试删除 os.environ['DISPLAY'] = ':0' 行,看看它是否正常工作 - 我以前从未见过/使用过该设置。
  • 删除该行会导致“no display name and no $DISPLAY environment variable”错误。
  • 你确定你需要在 Cygwin 上运行这个脚本吗,它不是一个操作系统,而是一个简单的 Unix 模拟器,允许你使用 Unix 语法和命令?
  • 你是如何安装 tinker 的?为什么不从菜单运行 X?
  • tkinter 是一个简单的库。 cygwin 不是一种简单的运行方式。您是否有理由必须通过 cygwin 运行它?

标签: python tkinter cygwin x11


【解决方案1】:

我知道这是旧的,但它帮助我解决了这个问题。我也在 Windows 10 上。 您必须运行本机 X 服务器。请参阅来自@speaker-to-animals 的答案here。 上面的 os.environ 命令与 CMD 中的 SET DISPLAY=:0.0 相同。 在你的 Windows 机器上启动 Xorg 服务器,没有客户端,所以它在后台等待。 使用此设置,您上面的代码可以完全按照您的意愿工作。我从 Windows CMD 而不是 Cygwin 运行它。我用它来为测试用例添加 GUI - 测试人员喜欢它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多