Tkinter单选按钮:图像在OSX上像素化,但在Ubuntu中可以正常工作

问题描述

我实现了一个单选按钮网格,每个按钮都有唯一的图像。

我在下面添加了相关的代码行:

photo[i] = ImageTk.PhotoImage(file=image_file)
button[i] = Radiobutton(frame,variable=var,value=i+1,indicatoron=0,image=photo[i],selectcolor='#808080')
button[i].pack(side=LEFT)

OSX上的图像看起来非常像素化,如下所示:

OSX Pixelated Radiobutton

相同的代码在ubuntu上也可以正常工作(无可见像素)。下面是原始图像:

Original Image

解决方法

问题出在here所述的tcl tk系统版本上。

如果您使用的是macOS 10.6或更高版本,则由Apple提供的Tcl / Tk 8.5 有严重的错误,可能会导致应用程序崩溃。如果你想 使用IDLE或Tkinter,请不要使用Apple提供的Python。代替, 从python.org或更高版本安装并使用更高版本的Python 提供或链接较新版本的第三方发行商 Tcl / Tk。

这甚至引起了我模糊的单选按钮体验。

如果您正在使用任何当前python.org Python安装程序中的Python 对于macOS(3.9.0 +,3.8.0 +或3.7.2+),无需采取进一步措施即可 使用IDLE或tkinter。将使用Tcl / Tk 8.6的内置版本。

我用IDLE运行了代码,效果很好!尽管我仍然无法更改Apple提供的越野车系统tcl tk。