【问题标题】:How do I make my widgets in tkinter adjust their size automatically with respect to the window size?如何使 tkinter 中的小部件根据窗口大小自动调整其大小?
【发布时间】:2021-10-02 09:56:18
【问题描述】:

我的 tkinter 窗口有大约 16 个按钮,它们彼此等距放置在一个正方形中。我使用 ttk 创建这些对象并使用place() 将它们放置在窗口上。当用户通过拖动窗口的角来调整窗口大小时,我希望按钮和按钮中的文本根据用户是增加窗口大小还是减小窗口大小而自动增大/缩小。

【问题讨论】:

  • 我确实使用网格来解决这个特定问题,但是使用它给我带来了另一个问题(与这个问题无关)......所以我想知道是否可以使用 place() .
  • 网格是最好/简单的方法,如果你愿意,你可以询问这个问题。地方不是最好的主意,IMO
  • 啊……好吧,我知道这会发生,我认为即使有地方也有办法实现这一点。 @Cool Cloud,我已经更新了这个问题。如何根据窗口大小调整按钮的大小?
  • 如果您谈论的是grid,那么您可以配置为使用他们的weight,以及sticky 选项,以便在有人调整窗口大小时使其增长
  • 好的...你有什么具体的链接/视频可以参考吗?

标签: python tkinter resize tkinter-layout


【解决方案1】:

为了让小部件随着大小的增加而增长,我使用weight 选项以及sticky 作为grid 经理。既然你说你有一个正方形,我已经制作了 16 个 4 行 4 列的按钮。这就是它的样子:

from tkinter import *

root = Tk()

for i in range(4):
    root.grid_rowconfigure(i,weight=1) # i is the row index
    for j in range(4):
        Button(root,text=f'{4*i+j}th Button', width=10).grid(row=i,column=j,sticky='news')
        root.grid_columnconfigure(j,weight=1) # j is column index

root.mainloop()

所以sticky='news' 将使小部件占据单元格上的整个空间。而weight 将为给定的行/列提供额外的传播空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多