python - 使用 pipenv 时,`tkinter._test()` 按钮不可见
问题描述
我现在正在学习 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)后,我开始环顾四周,并在 Apple Discussion Boards 上找到了这篇文章,建议您可以使用自制软件安装链接的 Python 版本homebrew 自己安装的 Tk 版本。我试过这个但失败了,所以我用谷歌搜索了这个问题,发现这个 StackOverflow 帖子似乎建议我可以安装 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 呢?
解决方案
对于遇到相同问题且无法切换 Python 版本的任何人,您可以通过更改 MacOs 主题轻松绕过“按钮上不显示文本”的问题。系统偏好设置>常规>灯光模式。
您应该记住,您可能会遇到其他问题。
推荐阅读
- mariadb - 仅限服务器端的 Webhook
- node.js - NodeJS 将 rest API APP 表达成 Angular 5 项目
- python - 访问元组内的数据
- python - 线程无限期挂起
- python-3.x - boxplot - python - 标签的文本 - 如何更改字体大小
- git - 赫斯基的 Git 推送错误
- c# - 在 C# 中,有没有办法将 Microsoft.VisualBasic.Interaction.MsgBox() 之类的引用调用缩短为 myMsgBox() 之类的调用?
- wordpress - 在wordpress divi主题中将图像对齐在一行中
- sql - Postgres9.6 - 包含引用已创建元素的元素数组的列
- android - Appbarlayout 和滚动标志隐藏一个孩子