Tkinter“放置”几何管理器不起作用

mid*_*kin 1 python tkinter tkinter-layout

我一直在从一本电子书中学习 Python。现在我正在学习这个Tkinter模块

这本书建议运行以下代码。但是,它不能正常工作。任何想法为什么?

from Tkinter import *

window = Tk()
window.geometry("200x200")

my_frame = Frame()
my_frame.pack

button1 = Button(my_frame, text = "I am at (100x150)")
button1.place(x=100, y=150)

button2 = Button(my_frame, text = "I am at (0 x 0)")
button2.place(x=0, y=0, width=100, height=50)

window.mainloop()
Run Code Online (Sandbox Code Playgroud)

我应该得到什么:

理想的结果

我得到的:

实际结果

添加button1.pack()and 后button2.pack(),我得到了这个:

不同几何管理器的结果

Bry*_*ley 7

  1. 不要使用place. 学习使用packgrid。由 管理的小部件place不会影响其包含父级的大小。因为你没有给出my_frame大小,也因为你没有打包它来填充窗口,所以它只有 1 像素高 x 1 像素宽。这使得它(以及其中的小部件)有效地隐形。如果您坚持使用place,则需要给出my_frame一个大小,或者使用使其填充其父级的选项来打包它。
  2. my_frame.pack应该是my_frame.pack()(注意后面的括号)

如果您对快速修复而不是解释更感兴趣,请按以下方式打包my_frame

my_frame.pack(fill="both", expand=True)
Run Code Online (Sandbox Code Playgroud)

这就是修复代码所需的全部内容。