gpt4 book ai didi

python - 如何在 tkinter 中创建一个自调整大小的按钮网格?

转载 作者:IT老高 更新时间:2023-10-28 21:39:31 27 4
gpt4 key购买 nike

我正在尝试使用 Tkinter 创建一个按钮网格(以实现可点击的单元格效果)。

我的主要问题是我无法使 grid 和按钮自动调整大小并适合父窗口。

例如,当我在网格上有大量按钮时,我没有缩小按钮以使网格适合窗口内部,而是得到一个超出屏幕的拉伸(stretch)框架。

我正在寻找的效果是网格填充所有可用空间,然后调整其单元格的大小以适应该空间。我已阅读文档,但我仍然无法弄清楚如何使其工作。

这是我的出发点的基本代码:

def __init__(self):
root = Tk()
frame = Frame(root)
frame.grid()

#some widgets get added in the first 6 rows of the frame's grid

#initialize grid
grid = Frame(frame)
grid.grid(sticky=N+S+E+W, column=0, row=7, columnspan=2)

#example values
for x in range(60):
for y in range(30):
btn = Button(grid)
btn.grid(column=x, row=y)

root.mainloop()

最佳答案

您需要将行和列配置为具有非零权重,以便它们占用额外空间:

grid.columnconfigure(tuple(range(60)), weight=1)
grid.rowconfigure(tuple(range(30)), weight=1)

您还需要配置按钮,以便它们展开以填充单元格:

btn.grid(column=x, row=y, sticky="news")

这必须一直进行,所以这里有一个完整的例子:

from tkinter import *

root = Tk()
frame = Frame(root)
root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
frame.grid(row=0, column=0, sticky="news")
grid = Frame(frame)
grid.grid(sticky="news", column=0, row=7, columnspan=2)
frame.rowconfigure(7, weight=1)
frame.columnconfigure(0, weight=1)

#example values
for x in range(10):
for y in range(5):
btn = Button(frame)
btn.grid(column=x, row=y, sticky="news")

frame.columnconfigure(tuple(range(10)), weight=1)
frame.rowconfigure(tuple(range(5)), weight=1)

root.mainloop()

关于python - 如何在 tkinter 中创建一个自调整大小的按钮网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591294/

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