foz*_*ios 2 python user-interface tkinter ui-design python-3.x

虽然图片基本上显示了我想做的事情,但是:
如果可能,应使用网格。我会用python3
是的,当然有可能。Tkinter 可以说是所有 GUI 工具包中最灵活、最易于使用的几何管理器。仅使用pack, place, 并且grid可能没有您无法完成的布局。
从一张纸开始。严重地。在您能够想象这一点之前,请使用纸张。
绘制四个等宽的列。将这些列分成三个等高的行。这就是你用来布置所有东西的东西。
现在,在上面绘制标签。请注意,在前两行中,标签占据了第 1 列和第 2 列,以及第 3 和第 4 列。另请注意,在第三行中,标签占据了第 2 列和第 3 列。
现在,将其转换为代码。Tkinter 从零开始对行和列进行编号,因此第一个标签是第 0 行、第 0 列,它跨越两列。它旁边是第 0 行第 2 列的标签,它也跨越两列。
下一行以同样的方式完成。
对于第三行,标签是第 2 行、第 1 列,它跨越 2 列。
不要忘记调用grid_rowconfigure和grid_columnconfigure。例如,您可能想要使用该uniform属性。
为了使标签成为完美的正方形,我建议将每个标签放在一个框架中,将框架的宽度设置为您想要的任何大小,然后关闭几何传播,以便框架设置标签的大小,而不是标签设置框架的大小。然后将框架放在网格中,而不是标签中。
您还可以对行和列使用uniform和minsize选项的组合,但如果标签变得太大而无法容纳,您可能会遇到问题。做一些实验,看看什么最适合你。
假设您有 5 个按钮(标签或其他任何按钮):
import tkinter as tk
master = tk.Tk()
master.title('Test')
master.geometry("100x100+700+350")
b1 = tk.Button(text='1')
b1.grid(row=0, column=0)
b2 = tk.Button(text='2')
b2.grid(row=0, column=1)
b3 = tk.Button(text='3')
b3.grid(row=1, column=0)
b4 = tk.Button(text='4')
b4.grid(row=1, column=1)
b5 = tk.Button(text='5')
b5.grid(row=2, columnspan=2)
tk.mainloop()