Python Tkinter:在框架中放置按钮

7

我正在尝试创建不同的框架并切换或销毁它们,以便您可以像在普通的iOS应用程序中一样在窗口之间移动。

为此,我需要将小部件(组件)放置在框架(容器)中。

然而,当我尝试向框架添加按钮时,它没有包装到右侧。

以下是我的代码: from tkinter import *

root=Tk()
root.geometry('500x500')
root.title('Good morning :)')

frame1=Frame(root,width=500,height=500,bg='green')
frame1.pack()

button1=Button(frame1,text='Hello')
button1.pack(side='bottom')

1
你忘记了 root.mainloop() - furas
你为什么认为任何一个小部件都应该放在右边?你的代码中甚至没有尝试这样做的内容。你说你已经“尝试了一切”,那就展示给我们看不止一种你尝试过的方法。 - Bryan Oakley
这是 pack 如何工作的规范文档:http://tcl.tk/man/tcl8.5/TkCmd/pack.htm#M26 - Bryan Oakley
如果您的 Frame 中只有一个 Button,则无法看到它位于哪一侧。Button 填充整个 Frame,而 Frame 不会填充整个窗口。请尝试使用 frame1.pack(fill='both', expand=True) - furas
1个回答

8

您需要扩展框架以填充整个顶级窗口,并告诉按钮在side='right'而不是side='bottom'上打包。
最后,您需要运行root.mainloop()

from tkinter import *

root = Tk()
root.geometry('500x500')
root.title('Good morning :)')

frame1 = Frame(root, bg='green')
frame1.pack(expand=True, fill=BOTH)

button1 = Button(frame1, text='Hello')
button1.pack(side=RIGHT)

root.mainloop()

此外,在Frame语句中不需要指定尺寸,因为它会根据传递给pack()函数的额外关键字参数扩展到几何体中所述的完整的500x500。默认情况下,Frame只能容纳其中的小部件,因此它的大小只有Button那么大,除非您告诉它要扩展到顶级根小部件的完整大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接