Python中Tk的背景颜色

65

我正在使用Tkinter编写一个幻灯片程序,但我不知道如何将背景色更改为黑色而不是标准的浅灰色。这可以怎么做?

import os, sys
import Tkinter
import Image, ImageTk
import time

root = Tkinter.Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.overrideredirect(1)
root.geometry("%dx%d+0+0" % (w, h))
root.focus_set()
root.bind("<Escape>", lambda e: e.widget.quit())
image = Image.open(image_path+f)
tkpi = ImageTk.PhotoImage(image)        
label_image = Tkinter.Label(root, image=tkpi)
label_image.place(x=0,y=0,width=w,height=h)
root.mainloop(0)

1
什么的背景?小工具?使用“background”关键字。更多信息:http://www.pythonware.com/library/tkinter/introduction/widget-styling.htm - mg.
许多Tk小部件都具有bg属性,允许指定它们的背景颜色。 - sastanin
嗯,我对Tk非常陌生,所以我不确定widget到底是什么,但是label_image.configure(background='black')解决了问题。在这种情况下,label_image是一个widget还是只是root? - olofom
经典的Tk小部件具有属性。主题化的小部件往往没有;小部件的背景颜色是样式/主题的属性。 - Donal Fellows
5个回答

132
root.configure(background='black')

更一般地说

<widget>.configure(background='black')

非常感谢!在这种情况下,label_image.configure(background='black') 就是需要的黑色背景! - olofom
只能使用预定义的颜色,如“黑色”或“白色”,还是可以使用十六进制代码? - Noah Krasser
据我所知,任何适当的颜色都可以。这里有一个简单的例子。 - CJ Harries
2
为了后世记录,有效的颜色是由系统定义的(例如 许多命名的颜色),或者是十六进制值,可以是 #RGB#RRGGBB#RRRRGGGGBBBB 形式。 - CJ Harries

24

我知道这可能是一个老问题,但是:

root["bg"] = "black"

同时也能实现你想要的功能,而且需要输入的内容更少。


有趣 - 我不知道我们也可以使用[]。我找到的所有示例都是使用.configure()或在ruby中使用{}块变量。然而,我奇怪地更喜欢稍微长一点的名称“background”。bg更短,但我认为略微冗长是可以接受的。 - shevy

4

config 是另一个选项:

widget1.config(bg='black')
widget2.config(bg='#000000')

或者:

widget1.config(background='black')
widget2.config(background='#000000')

4

它已经更新了,因此

root.configure(background="red")

现在是:

root.configure(bg="red")

3
widget['bg'] = '#000000'

或者

widget['background'] = '#000000'

也可以使用十六进制颜色值

因为十六进制颜色值也可以被接受。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接