初级问题:隐藏在小标签后面的Python Tkinter框架



我有一个关于python tkinter:的初学者问题

我有一个这样的框架:

import tkinter
root = tkinter.Tk()
root.geometry('100x100')
frame = tkinter.Frame(root, width=100, height=80, bg='green')
frame.pack()
root.mainloop()

结果是一个窗口,大部分是绿色的。现在我想在那个绿色区域贴一个标签。因此,我在frame.pack((root.mainloop((

label = tkinter.Label(frame, text='TESTTEST')
label.pack()

这将导致一个窗口打印TESTTEST。但是没有什么是绿色的了。我的相框去哪儿了?文本不够大,无法用自己的背景完全覆盖绿色区域。

我做错了什么?为什么它不能那样工作?

标签之间放置另一帧,如下所示:

frame2 = tkinter.Frame(frame, width=100, height=20)
frame2.pack()

导致标签上方的区域是无色的。然而,在我的标签的左边和右边是绿色的?!上面和下面都没有绿色。就在我标签的左边和右边。

这是怎么回事?

当您使用packgrid时,默认情况下小部件会收缩以适合其子级。99%的时候这就是你想要的。在制作简单的示例时,这可能看起来不直观,也没有用,但在创建真实、复杂的用户界面时,这会使工作变得更容易,因为你不必担心计算小部件的大小和位置。

如果将窗口配置为大于框架,并且将框架配置为填充窗口,则会看到绿色。

frame.pack(fill="both", expand=True)

使用label.place()指定您想要标签的位置。例如

label.place(x=20,y=20)

这将标签放置在frame内部的位置(20,20(处。

默认的标签宽度是文本的长度加上填充。您可以在place()中指定宽度和高度以及其他选项。

您可以在初始化语句label = tkinter.Label(frame,<*options in here>)中指定选项来获取背景、前景色和其他属性。

tkinter使用默认字体,因此您需要查看font选项来更改它。创建自己的字体并应用它是可能的,但我建议你在尝试之前先学习更多。

最新更新