【发布时间】:2019-11-07 15:49:26
【问题描述】:
我现在正在学习 Tkinter,并试图解决我的第一个问题,但发现 Google 并没有帮助。
我在 Mac OS X 10.15.1 (Catalina) 上运行此代码
我使用的是 Python 3.7,我的代码看起来像这样(每个 PEP8 标准有很多样板):
"""
Experiments in tkinter
"""
import tkinter as tk
def main():
"""
Main entrypoint
"""
tk._test()
if __name__ == "__main__":
main()
这会向控制台输出以下警告:
弃用警告:Tk 的系统版本已弃用,可能会在未来的版本中删除。请不要依赖它。设置 TK_SILENCE_DEPRECATION=1 以禁止显示此警告。
它还显示一个带有完全空白按钮的窗口:
据我了解,这些按钮应该是“点击我”和“退出”。
当我点击顶部按钮时,它会像这样闪烁一秒钟:
之后按钮比之前宽:
我假设 Tk 版本错误可能与输出行为有关。但是我似乎找不到更新 Tk 的方法。我应该在这里做什么?
更新
在看到@ShayneLoyd 的回答后(建议我需要更新版本的 Python 和更新版本的 Tk),我开始四处寻找,发现 this post on the Apple Discussion Boards 这表明您可以使用自制软件安装链接的自制软件的 Python 版本自己安装的 Tk 版本。我试过这个但它失败了,所以我用谷歌搜索了这个问题并找到了this StackOverflow post,这似乎表明我可以安装 ActiveTcl 它会起作用的。
我从 ActiveState 安装了 ActiveTcl 并返回到我的项目。一开始我是这样运行的:
$> cd ~/Source/experiments/python/tkinter
$> ./test.py
这实际上有效!我可以阅读按钮,它的行为就像它应该的那样。然后我意识到我没有使用 pipenv,所以我做了一个快速测试:
$> pipenv run ./test.py
现在我又回到了失败状态。我更新了我的脚本以显示 Tcl 和 Tk 版本,果然当我使用 pipenv 时它正在加载 Tcl/Tk 8.5.9 但是当我不使用 pipenv 时它正在加载 8.6.9
那么我现在该如何修复 pipenv 呢?
【问题讨论】:
-
我无法复制您的错误。我不明白你为什么需要
tkinter._test()来工作,因为你也从不使用它 -
我想让
tkinter._test()工作,因为我是第一次使用tkinter,这就像“Hello, World”的tkinter版本。如果这不起作用,我需要修复我的开发环境。至于“因为你从不使用它”,我不知道你在说什么——我清楚地做使用它,就在我的代码中——而且我有几个屏幕截图的窗口就是结果。 -
你在 OSX 上吗?我认为这是 OSX 上的错误。如果调整窗口大小,按钮上的文本可能会出现。
-
@BryanOakley 这是 OS X(特别是 10.15.1 Catalina)。虽然调整窗口大小并没有修复按钮。
-
旧习惯很难改掉...现在实际上是 macOS,而不是 OS X ;)
标签: python tkinter tkinter-macos