Tkinter Mac Checkbutton 取消选择动画故障
Tkinter Mac Checkbutton Deselect Animation Glitch
我在 Mac 上使用 Tkinter。每当我有一个 Checkbutton 或 Radiobutton 时,我 deselect 时的动画就会出现故障。例如,一个被选中的复选按钮,onclick,将 deselect 几分之一秒, select 一秒钟,然后 deselect - 有没有人遇到过这个问题,如果那么,它可以修复吗?
from Tkinter import *
root = Tk()
Checkbutton1 = Checkbutton(root).pack()
root.mainloop()
这个问题可能与 Tcl/Tk 在 Mac OS X, Aqua Cocoa Tk 8.5 上的分布有关。图形问题 have been confirmed for Tkinter,尽管报告没有具体提及 Checkbutton 问题。
您必须安装最新版本的 Tcl(8.5 或 8.6 的一些实现)和 link 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
(上面link中使用的选项是--with-brewed-tk,但它已被弃用--with-tcl-tk)
配方仅适用于小桶,因此只有 Python 知道新的 Tcl/Tk。 tclsh 和 wish 也将继续使用旧的 Tcl。
查看Python中的版本和基本功能:
import Tkinter
Tkinter._test()
检查 tclsh 中的版本:
puts $tcl_version
对于 Python 3,在 brew 中使用 python3
,在 python 脚本中使用 tkinter
。
如果您更喜欢使用 .dmg 并且不介意商业但免费(如啤酒)解决方案,您可以尝试 ActiveTcl. TkDocs has a good 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.
(或者 /Library/Frameworks vs /System/Library/Frameworks 如果你安装了 ActiveTcl)
用matplotlib绘图时应用程序崩溃了...所以如果你使用这样的包我不推荐这种方法。我目前正在尝试让 Python 与 ActiveTcl 一起工作,看看我是否可以消除故障并让 matplotlib 仍然工作。 ActiveTcl 8.5 似乎足以消除主要故障,同时与大多数软件包兼容,但我还没有尝试。
在此 issue 中调整枕头安装的设置脚本的一些想法,但我无法将其应用于 matplotlib。
我在 Mac 上使用 Tkinter。每当我有一个 Checkbutton 或 Radiobutton 时,我 deselect 时的动画就会出现故障。例如,一个被选中的复选按钮,onclick,将 deselect 几分之一秒, select 一秒钟,然后 deselect - 有没有人遇到过这个问题,如果那么,它可以修复吗?
from Tkinter import *
root = Tk()
Checkbutton1 = Checkbutton(root).pack()
root.mainloop()
这个问题可能与 Tcl/Tk 在 Mac OS X, Aqua Cocoa Tk 8.5 上的分布有关。图形问题 have been confirmed for Tkinter,尽管报告没有具体提及 Checkbutton 问题。
您必须安装最新版本的 Tcl(8.5 或 8.6 的一些实现)和 link 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
(上面link中使用的选项是--with-brewed-tk,但它已被弃用--with-tcl-tk)
配方仅适用于小桶,因此只有 Python 知道新的 Tcl/Tk。 tclsh 和 wish 也将继续使用旧的 Tcl。 查看Python中的版本和基本功能:
import Tkinter
Tkinter._test()
检查 tclsh 中的版本:
puts $tcl_version
对于 Python 3,在 brew 中使用 python3
,在 python 脚本中使用 tkinter
。
如果您更喜欢使用 .dmg 并且不介意商业但免费(如啤酒)解决方案,您可以尝试 ActiveTcl. TkDocs has a good 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.
(或者 /Library/Frameworks vs /System/Library/Frameworks 如果你安装了 ActiveTcl)
用matplotlib绘图时应用程序崩溃了...所以如果你使用这样的包我不推荐这种方法。我目前正在尝试让 Python 与 ActiveTcl 一起工作,看看我是否可以消除故障并让 matplotlib 仍然工作。 ActiveTcl 8.5 似乎足以消除主要故障,同时与大多数软件包兼容,但我还没有尝试。
在此 issue 中调整枕头安装的设置脚本的一些想法,但我无法将其应用于 matplotlib。