Python:Tkinter控件背景(按钮、输入框等)
我在创建图形用户界面(GUI)时遇到了一些问题。具体来说,就是在更改背景的时候,我可以更改整个背景,也可以更改标签等的背景,但当涉及到按钮和输入框时,按钮后面总有一块白色区域,我似乎无法更改这个区域 :S
下面的图片可以看到这个问题。
(因为我的声望不够,无法上传图片,所以我会链接到它) http://www.thesite.dk/upload/media/tkinter.png
我的代码是:
from Tkinter import *
background = "BLACK"
textColor = "WHITE"
root = Tk()
root.configure(bg=background)
Email = Label(root, text="Enter E-mail Address :", font=("Lucida Grande", 12), fg=textColor, background=background)
Email.grid(row=6, column=0, sticky=NW, padx=19)
EmailField = Entry(root, width=30)
EmailField.grid(row=6, column=0, columnspan=3, sticky=NW, padx=159)
EmailButton = Button(root, text="Mail It !", background=background)
EmailButton.grid(row=6, column=0, columnspan=6, sticky=NW, padx=389)
SM_Status = StringVar()
EmailStatus = Label(root, textvariable=SM_Status, font=("Lucida Grande", 12), fg=textColor, background=background)
EmailStatus.grid(row=6, column=2, sticky=NW, padx=20)
可能有简单的解决办法,但我在谷歌上搜索了无数次,阅读了很多文档和论坛帖子,还是没有找到解决方案 :( 希望你们能帮帮我...
对了,我是在使用 Mac OS X 和 Python 2.6。
3 个回答
这似乎跟你使用的平台有关,可能还跟你选择的主题有关系。根据你截图中按钮的样子,我猜你是在用Mac。看起来按钮的文字是放在一个位图里,这个位图提供了按钮的圆角轮廓。可能Tkinter并不能控制这个部分。
在Windows的经典主题下,按钮的背景是黑色的,但因为有浮雕效果,所以有一个灰色的轮廓。当我把它设置为relief=FLAT时,按钮就完全变成黑色了。
如果你能提供一个可以直接运行的示例,那就太好了。我需要为textColor添加一个定义,把command=CMD.send_mail注释掉,并在最后加上root.mainloop()。我还在按钮设置中添加了textColor=WHITE。
你可以试着调整relief选项,或者换一下系统的主题,看看能不能改变按钮的显示方式。
在Mac电脑上,原生按钮的背景颜色你几乎无法改变。这就是使用原生按钮的代价。在其他平台或者其他控件上,你看到的可能是“高亮背景”,这个背景可以通过控件的 highlightbackground
和 highlightthickness
属性来修改。这部分区域是用来表示控件当前获得了焦点。
我知道这已经过去一段时间了,你可能早就不再处理这段代码了,但我找到了解决办法,想把它分享给有类似问题的朋友们。这个方法和你设置输入框周围的背景颜色是一样的:
highlightbackground=color