根扭结

2024-04-25 15:06:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用tkinter创建一个时间表。我在代码中将根bg颜色设置为白色,但它没有变白。(我还将一些标签设置为白色,以查看它是否变为白色。)

但是,当我在一个新文件中测试它时,它可以工作。在

这是我的日程代码。在

root=Tk()
root['bg']='white'
cp=coursePlan(root)
cp.pack()
root.title('Schedule')
root.mainloop()

这是我的测试代码。在

^{pr2}$

schedule code UI

test code UI


Tags: 文件代码颜色tkinterroot标签时间表cp
1条回答
网友
1楼 · 发布于 2024-04-25 15:06:40

当您将一个parent分配给小部件,比如当小部件显示时,Label(root, ...)时,默认情况下,小部件在其父部件上占用了一些空间。在

因此,如果cd3}的父控件没有设置为cd3},那么它的cd3}基本上没有设置为自己的cd3}颜色:

  1. 小部件显示时选择了填充选项(pack(fill=...grid(sticky=...)),或者小部件在x和y维上都超过了其父对象,这导致父对象完全位于小部件后面,因此只显示小部件的bg 'red'。在
  2. 小部件显示时不考虑大小调整,因此部分占用其父部件,在这种情况下,将显示小部件及其父对象的bg 'red'和{}
  3. 最后,这个小部件根本不显示,所以只显示父对象的bg '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()

相关问题 更多 >