我在 Mac 上使用 Tkinter。每当我有一个复选按钮或单选按钮时,取消选择它时的动画就会出现故障。例如,选中的复选按钮 onclick 将取消选择一小部分,选择一秒钟,然后取消选择 - 有人遇到过此问题吗?如果是,是否可以修复?
from Tkinter import *
root = Tk()
Checkbutton1 = Checkbutton(root).pack()
root.mainloop()
最佳答案
此问题可能与 Mac OS X、Aqua Cocoa Tk 8.5 上的 Tcl/Tk 发行版有关。图形问题 have been confirmed for Tkinter ,尽管该报告没有具体提及 Checkbutton 问题。
您必须获取最新版本的 Tcl(8.5 或 8.6 的某些实现)并将 Python 与其链接。
警告:请参阅下面的编辑,这可能会导致其他软件包出现问题。
我关注了this issue on homebrew用brew安装tcl-tk(8.6),然后让Python使用它。 Python 2 的命令是:
brew install homebrew/dupes/tcl-tk
brew uninstall python
brew install python --with-tcl-tk
(上面链接中使用的选项是 --with-brewed-tk,但它已被弃用为 --with-tcl-tk)
该公式仅包含 keg,因此只有 Python 会了解新的 Tcl/Tk。 tclsh 和 wish 也将继续使用旧的 Tcl。 查看Python的版本和基本功能:
import Tkinter
Tkinter._test()
在 tclsh 中检查版本:
puts $tcl_version
对于Python 3,在brew中使用python3
,在python脚本中使用tkinter
。
如果您更喜欢使用 .dmg 并且不介意商业但免费(如啤酒)的解决方案,您可以尝试 ActiveTcl 。 TkDocs 有一个很好的 tutorial关于这一点。这次它还应该安装一个新的wish。
编辑:按照上述步骤操作后,图形故障应该已经消失,但是如果您使用 matplotlib、pillow 或其他使用 Tk 后端的包,则在导入后端模块时可能会收到如下所示的警告:
Class TKApplication is implemented in both /usr/local/opt/tcl-tk/lib/libtk8.6.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
(或者如果您安装了 ActiveTcl,则可能是/Library/Frameworks 与/System/Library/Frameworks)
当使用 matplotlib 绘图时,应用程序崩溃了...所以如果您使用此类软件包,我不推荐此方法。我目前正在尝试让 Python 与 ActiveTcl 一起工作,看看是否可以消除故障并使 matplotlib 仍然工作。 ActiveTcl 8.5 似乎足以消除主要故障,同时与大多数软件包兼容,但我还没有尝试过。
调整枕头安装设置脚本的一些想法 issue ,但我无法将其应用于 matplotlib。
关于python - Tkinter Mac 检查按钮取消选择动画故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197925/