当我将小部件放入框架中时,框架的颜色消失了。如果之前为“黑色”,则在框架中放入widget(label)
之后,颜色会再次变为白色。
这是我的代码:
from tkinter import *
root = Tk()
root.geometry("700x600")
f = Frame(root, height = 400, width = 400, bg = 'black')
f.pack()
id = Label(f, text = "Email:", fg = 'blue', font = ('Kristen ITC', 18))
id.pack()
答案 0 :(得分:3)
您的Frame
的大小正在调整为Label
。您需要设置...:
...
f.pack_propagate(False)
f.pack()
...
为了使Frame
保持其自身尺寸,而不受其子窗口小部件的影响。
答案 1 :(得分:3)
默认情况下,小部件会缩小或扩展以适合其内容。添加按钮时,框架会缩小以适合。
您似乎希望框架仅占据根窗口的一部分。与其明确为框架指定宽度和高度,不如让tkinter为您做到这一点通常更好。用所需的小部件填充框架,然后让tkinter决定框架的大小。然后,对grid
或pack
使用适当的选项,以对其进行逻辑排列。如果允许tkinter使小部件的尺寸合适,您最终将获得响应速度更快的UI。
例如,如果在框架上调用fill
时设置了expand
和pack
选项,它将不会缩小以适合。如果以后需要添加更多小部件,则无需修改代码的其他部分即可使其适合。
f.pack(fill="both", expad=True)
您还可以通过调用f.pack_propagate(False)
来关闭“缩小以适应”功能,但这很少是正确的解决方案,因为它会迫使您计算尺寸,并且如果您在以下位置运行程序,则计算可能是错误的具有不同字体或分辨率的系统。