我正在尝试使用 tkinter 在 python 中制作一些 UI。
这是我正在使用的代码示例:
root = Tk()
root.geometry("1000x700x0x0")
canvas = Canvas(root, width = 700, height = 700, bg ='white').grid(row = 0, column = 0)
button1 = Button(root, text = "w/e", command = w/e).grid(row = 0, column = 1)
button2 = Button(root, text = "w/e", command = w/e).grid(row = 1, column = 1)
关于我该怎么做的任何帮助?
谢谢!
最佳答案
由于您的 GUI 似乎有两个逻辑组的小部件,我会这样组织它。首先将 Canvas 放在左侧,将框架放在右侧。您可以使用 pack
、place
、grid
或 Pane 窗口来管理它们。对于从左到右的方向,pack
是一个不错的选择,因为它很简单
请注意,您不必这样做,但经验告诉我,这样做可以更轻松地解决布局问题。
在下面的示例中,我将按钮框架的 expand
设置为 False
,这意味着当用户调整大小时 Canvas 会增大和缩小(因为它有 expand=True
),但按钮只会占用它们所需的空间。
canvas = Canvas(root, ...)
buttonframe = Frame(root, ...)
canvas.pack(side="left", fill="both", expand=True)
buttonframe.pack(side="right", fill="both", expand=False)
接下来,您可以将所有按钮放在右侧,而不必担心它们的放置会如何影响左侧的对象。
使用 grid
时要记住的重要一点是,您应该指定至少一行和至少一列以提供任何额外空间。这可以是包含小部件的行和/或列,也可以是边缘上的空行和列。
button1 = Button(buttonframe, ...)
button2 = Button(buttonframe, ...)
button3 = Button(buttonframe, ...)
...
button1.grid(row=0, column=0)
button2.grid(row=0, column=1)
button3.grid(row=1, column=0)
...
buttonframe.grid_rowconfigure(100, weight=1)
buttonframe.grid_columnconfigure(2, weight=1)
注意:如果您需要保留对小部件的引用,则必须创建小部件并调用grid
(或pack
或place
) 在两个单独的行上。这是因为 Button(...).grid(...)
返回上次函数调用的值,而 grid(...)
返回 无
关于python - Tkinter - 网格元素彼此相邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40078748/