python - Tkinter Mac 检查按钮取消选择动画故障

标签 python macos animation tkinter visual-glitch

我在 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。 tclshwish 也将继续使用旧的 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/

相关文章:

linux - 如何在队列和后台运行异步命令?

ios - 从中间动画UIImageView翻转

swift - 重复 iCarousel 的滚动

ios - 限制动画到父 View

python - 在 Deedle 中使用默认值将列添加到数据框

python - Matplotlib 重用由另一个脚本创建的图形

c++ - 使用启用了 c++11 的 clang 进行编译失败

macos - NSTextView:何时自动插入字符(如自动匹配括号)?

套接字的 Python 错误。 Ntohl() 函数

python - 任何用于读取 Scantron 样式数据的 Python 工具