如何在Mac OS X中更改Tkinter按钮的前景色或背景色?

53 投票
12 回答
140469 浏览
提问于 2025-04-15 14:52

我在学习《Python编程》这本书里的Tkinter章节时遇到了一个问题,就是按钮的前景色和背景色无法更改。我是在Mac OS X 10.6系统上,使用的是Python 2.6.1。在这个系统上,标签的颜色可以改变,但按钮的颜色却不行。例如:

from Tkinter import *

Label(None, text='label', fg='green', bg='black').pack()
Button(None, text='button', fg='green', bg='black').pack()

mainloop()

在我的Mac系统上,标签的颜色可以变,但按钮的颜色就是不变。而在Windows系统上,使用Python 2.6.1时,标签和按钮的颜色都可以改变。

有没有人知道这是怎么回事?

我查看了Interface Builder,发现这个工具里似乎没有选项可以更改按钮的前景色或背景色。不过,标签的前景色和背景色是可以编辑的。

可能是Mac OS X的渲染系统(Quartz?)不太支持(或者不容易)更改按钮的前景色和背景色。

12 个回答

30

你可以使用来自PyPI的 tkmacosx 库来实现这个功能。

安装方法:

  • 如果你用的是Python 2,可以输入 pip install tkmacosx 来安装。

  • 如果你用的是Python 3,可以输入 pip3 install tkmacosx 来安装。


下面是如何使用 tkmacosx 的示例:

from tkinter import *
from tkmacosx import Button

root = Tk()

B1 = Button(root, text='Mac OSX', bg='black',fg='green', borderless=1)
B1.pack()

root.mainloop()

在Mac OS X上运行得很好。

在这里输入图片描述

70

在Mac上,有一种方法可以改变按钮的背景

使用:

highlightbackground=color

比如说:

submit = Button(root, text="Generate", highlightbackground='#3E4149')

这样做的结果是,按钮看起来很不错,和背景很搭:

按钮

34

我觉得答案是,Mac上的按钮就是不支持改变背景色和前景色。正如你所看到的,这并不是Tk特有的情况。

撰写回答