Tkinter窗口小部件颜色不变

时间:2018-12-07 16:57:08

标签: python tkinter

当我将小部件放入框架中时,框架的颜色消失了。如果之前为“黑色”,则在框架中放入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()

2 个答案:

答案 0 :(得分:3)

您的Frame的大小正在调整为Label。您需要设置...:

...
f.pack_propagate(False)
f.pack()
...

为了使Frame保持其自身尺寸,而不受其子窗口小部件的影响。

答案 1 :(得分:3)

默认情况下,小部件会缩小或扩展以适合其内容。添加按钮时,框架会缩小以适合。

您似乎希望框架仅占据根窗口的一部分。与其明确为框架指定宽度和高度,不如让tkinter为您做到这一点通常更好。用所需的小部件填充框架,然后让tkinter决定框架的大小。然后,对gridpack使用适当的选项,以对其进行逻辑排列。如果允许tkinter使小部件的尺寸合适,您最终将获得响应速度更快的UI。

例如,如果在框架上调用fill时设置了expandpack选项,它将不会缩小以适合。如果以后需要添加更多小部件,则无需修改代码的其他部分即可使其适合。

f.pack(fill="both", expad=True)

您还可以通过调用f.pack_propagate(False)来关闭“缩小以适应”功能,但这很少是正确的解决方案,因为它会迫使您计算尺寸,并且如果您在以下位置运行程序,则计算可能是错误的具有不同字体或分辨率的系统。