如何更改TKinter Column的背景颜色?

时间:2018-01-01 23:11:55

标签: python tkinter tk ttk

我有一个Tkinter应用程序,但我想将背景颜色更改为第一列的蓝色

Tkinter Application

from tkinter import *
from tkinter import ttk

root = Tk()
mainframe = ttk.Frame(root, padding="3 3 500 200")
mainframe.grid(column=0, row=0)

ttk.Label(mainframe, text="COLUMN 1 ROW 1").grid(column=1, row=1)
root.mainloop()

我尝试过以下操作,但收到错误消息:

from tkinter import *
from tkinter import ttk


root = Tk()
mainframe = ttk.Frame(root, padding="3 3 500 200")
mainframe.grid(column=0, row=0)

ttk.Label(mainframe, text="COLUMN 1 ROW 1").grid(column=1, row=1,bg ="blue4")
root.mainloop() 

tkinter.TclError:

Traceback (most recent call last):
  File "/Users/chriscruz/Desktop/aesop_1.1.py", line 11, in <module>
    ttk.Label(mainframe, text="COLUMN 1 ROW 1").grid(column=1, row=1,bg ="blue4")
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 2029, in grid_configure
    + self._options(cnf, kw))
_tkinter.TclError: bad option "-bg": must be -column, -columnspan, -in, -ipadx, -ipady, -padx, -pady, -row, -rowspan, or -sticky

2 个答案:

答案 0 :(得分:2)

ttk.Label没有bg选项,而是style选项,您可以按以下方式进行配置:

lbl = ttk.Label(mainframe, text="COLUMN 1 ROW 1")
style_ref = ttk.Style()
style_ref.configure("style_name.TLabel", background='blue')
lbl['style'] = "style_name.TLabel"
lbl.grid(column=1, row=1)

或者如果您使用tkinter.Label代替:

lbl = tkinter.Label(mainframe, text="COLUMN 1 ROW 1")
lbl['bg'] = 'blue'
lbl.grid(column=1, row=1)

答案 1 :(得分:0)

Frame包中的ttk类不支持后台选项,因此请尝试仅使用tkinter。

在此处查看类似问题:How do I change the background of a Frame in Tkinter?