gpt4 book ai didi

python - 有没有更好的方法来管理 Python 中 Tkinter 的位置?

转载 作者:行者123 更新时间:2023-11-30 22:58:27 26 4
gpt4 key购买 nike

现在我只使用方法place()来操作对象的位置。像这样:

self.s_date_label = Label(self, text = 'Start Date: ')
self.s_date_label.place(x=0,y=0)
self.start_date = Entry(self, bd=1)
self.start_date.place(x=70,y=0)
self.s_date_label2 = Label(self, text = 'example: 20160101'
self.s_date_label2.place(x=130,y=0)

但是,我认为这是一种愚蠢的方法。

因为当我必须控制同一行中的很多对象时。我所能做的就是通过 place() 中的参数 x 来控制它们。

有没有更好的方法来管理对象的位置?

最佳答案

两种选择是使用gridpack

网格

如果您需要使用行和列的类似表格的布局,

grid 是最好的选择。您可以指定特定的单元格,并且可以让项目跨越多行和/或多列。

例如:

l1 = tk.Label(parent, text="Username:")
l2 = tk.Label(parent, text='Password:")
username_entry = tk.Entry(parent)
password_entry = tk.Entry(parent)

l1.grid(row=1, column=0, sticky="e")
username_entry.grid(row=1, column=1, sticky="ew")
l2.grid(row=2, column=0, sticky="e")
password_entry.grid(row=2, column=1, sticky="ew")

parent.grid_rowconfigure(3, weight=1)
parent..grid_columnconfigure(1, weight=1)

有关更多信息,请参阅http://effbot.org/tkinterbook/pack.htm

打包

pack 非常适合在水平或垂直组中布置对象。 pack 非常适合工具栏,并且我经常将其用于整体布局,其中工具栏位于顶部,状态栏位于底部,内容位于中间。

例如:

toolbar_frame = tk.Frame(root)
statusbar_frame = tk.Frame(root)
content_frame = tk.Frame(root)

toolbar_frame.pack(side="top", fill="x")
statusbar_frame.pack(side="bottom", fill="x")
content_frame.pack(side="top", fill="both", expand=True)

有关更多信息,请参阅http://effbot.org/tkinterbook/pack.htm

混合包和网格

您可以(并且应该)在同一应用程序中同时使用 gridpack。但是,您不能在共享公共(public)父级的小部件上同时使用两者。

这不起作用,因为工具栏状态栏具有相同的父级:

toolbar = tk.Frame(root)
sstatusbar = tk.Frame(root)

toolbar.grid(...)
statusbar.pack(...)

这会起作用,因为toolbarsave_button有不同的父级。

toolbar = tk.Frame(root)
save_button = tk.Button(toolbar, ...)

toolbar.pack(side="top", fill="x")
save_button.pack(side="left")

关于python - 有没有更好的方法来管理 Python 中 Tkinter 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36194091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com