我正在使用tkinter创建计划。我在我的代码中将root bg颜色设置为白色,但它没有变白。 (我还将一些标签设置为白色以查看它是否变白。)
但是,当我在新文件中测试它时,它会起作用。
这是我的日程安排代码。
root=Tk()
root['bg']='white'
cp=coursePlan(root)
cp.pack()
root.title('Schedule')
root.mainloop()
这是我的测试代码。
root=Tk()
root['bg']='white'
l=Label(root,text='test')
l.grid(row=0,column=0)
root.mainloop()
答案 0 :(得分:1)
在显示窗口小部件时,为parent
等窗口小部件分配Label(root, ...)
时,默认情况下窗口小部件占用 over 其父窗口的空间。
窗口小部件有自己的背景颜色,这些颜色不一定是透明的,因此如果窗口小部件的bg
设置为'red'
,而父窗口的bg
设置为'white'
基本上有三种结果:
pack(fill=...
或grid(sticky=...)
),或者窗口小部件在x和y维度上都适合其父窗口,这导致父窗口完全位于窗口小部件后面,因此仅显示小部件的bg,'red'
。'red'
和'white'
都会显示'white'
。见下面的演示:
import tkinter as tk
def demo(*args):
if choice.get() == 1:
widget.pack(fill='both', expand=True)
elif choice.get() == 2:
widget.pack(fill='x', expand=False)
elif choice.get() == 3:
widget.pack_forget()
def default(event):
root.state('zoomed')
choice.set(2)
widget.pack(fill='x', expand=False)
root = tk.Tk()
root['bg'] = 'white'
root.state('zoomed')
widget = tk.LabelFrame(root, text="Displaying Options", bg='red')
choice = tk.IntVar(value=2)
fill = tk.Radiobutton(widget, variable=choice, text="Fill / Overfit", value=1)
no_resize = tk.Radiobutton(widget, variable=choice,
text="Some / No regard to resizability", value=2)
no_display = tk.Radiobutton(widget, variable=choice, text="Not displayed",
value=3)
choice.trace_add('write', demo) # to call demo when choice is modified
root.bind_all("<Escape>", default) # to go back to initial state when user hits esc
widget.pack(fill='x', expand=False)
fill.pack(side='left')
no_resize.pack(side='left')
no_display.pack(side='left')
root.mainloop()