python - Tkinter - 网格元素彼此相邻

标签 python tkinter

我正在尝试使用 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)

这就是我得到的:enter image description here

这就是我想要的:enter image description here

关于我该怎么做的任何帮助?

谢谢!

最佳答案

由于您的 GUI 似乎有两个逻辑组的小部件,我会这样组织它。首先将 Canvas 放在左侧,将框架放在右侧。您可以使用 packplacegrid 或 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(或packplace ) 在两个单独的行上。这是因为 Button(...).grid(...) 返回上次函数调用的值,而 grid(...) 返回

关于python - Tkinter - 网格元素彼此相邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40078748/

相关文章:

python - 使用 Boto 将无值插入 DynamoDB

python - 如何获取给定数字的约数列表?

python - Python tkinter 中的多处理

python - 设置自定义轴值 pyplot

python - 如何更改 tkinter 文本小部件中某些单词的颜色?

python - 在 Tkinter 中,如何更正此循环/函数,以便每个按钮将值更改为按钮的值?

Python索引一个正则表达式匹配的列表

python - 如何计算无序列表中元素的频率?

python - 部署 Google App Engine 应用程序时出现 503 错误

python - 如何在按下后更改按钮的背景颜色并恢复到之前的颜色