Adding label to frame in Tkinter ignores the attributes of frame(在 Tkinter 中为框架添加标签会忽略框架的属性)
问题描述
I have created a frame of fixed size and now i want to add some labels and other widgets on it. But i observed as soon as i add new widget on this frame its attributes are not honored i.e. size and default back ground color set is not honored.
from Tkinter import *
tk = Tk()
page1 = Frame(tk, bg="blue", width=100, height=200)
l1 = Label(page1, text='This is label 1')
page1.pack()
l1.pack()
tk.mainloop()
So in the above example if i comment out line 4 & 6, then i can see a frame of fixed size with blue background color. My requirement is I want to add some other widgets on this frame with this color.
You are correct about the width and height not being honored, but not about the background color. The background color is unaffected, but you can't see the background because the background fits precisely around the label. If you add padding to the label when you pack it you'll see the background.
As for the width and height... this is one of the great features of Tkinter. By default, a container widget expands or collapses to be just big enough to hold its contents. Thus, when you call pack, it causes the frame to shrink. This feature is called geometry propagation.
For the vast majority of applications, this is the behavior you want. For those rare times when you want to explicitly set the size of a container you can turn this feature off. To turn it off, call either pack_propagate or grid_propagate on the container (depending on whether you're using grid or pack on that container), giving it a value of False.
Using your code as an example, you would do:
page1.pack_propagate(False)
My recommendation is to not do that, and instead learn how to work with geometry propagation. It will make your GUIs behave better when the user resizes the windows, and you won't be spending time trying to calculate the right size for a window. Let Tkinter do that for you.
这篇关于在 Tkinter 中为框架添加标签会忽略框架的属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 Tkinter 中为框架添加标签会忽略框架的属性
基础教程推荐
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
