【问题标题】:How to divide space equally between widgets using Grid Layout Python Tkinter如何使用网格布局 Python Tkinter 在小部件之间平均分配空间
【发布时间】:2021-06-14 02:08:35
【问题描述】:

我想在 Tkinter 中使用网格布局在三个按钮之间平均分配空间。即使水平调整窗口大小,这些按钮也应该平均占据空间。

################################
#|  btn1  ||  btn2  ||  btn3  |#
################################

这是我的代码:

import tkinter as tk
from tkinter import ttk

win = tk.Tk()
win.grid_columnconfigure(0, weight=1)

btn1 = ttk.Button(win, text='btn1')
btn1.grid(column=0, row=0, columnspan=1, sticky='EW')

btn2 = ttk.Button(win, text='btn2')
btn2.grid(column=1, row=0, columnspan=1, sticky='EW')

btn3 = ttk.Button(win, text='btn3')
btn3.grid(column=2, row=0, columnspan=1, sticky='EW')

win.mainloop()

【问题讨论】:

    标签: python tkinter grid-layout tkinter-layout tkinter-button


    【解决方案1】:

    使用uniform 参数为所有三列提供统一的宽度。该值可以是任何值,只要所有列的大小相同即可。如果您希望它们随着窗口大小的调整而增长,请务必为它们赋予非零权重。

    win.grid_columnconfigure((0,1,2), weight=1, uniform="column")
    

    【讨论】:

    • 我测试了一下,效果很好!谢谢。我也注意到不使用uniform参数也能解决问题:win.grid_columnconfigure((0,1,2), weight=1)。
    • @CarlosPedrodeO.dosS:是的,如果按钮默认为相同大小,uniform 不会添加任何额外值。如果您有不同大小的小部件,则需要uniform 来强制列的宽度相同。
    【解决方案2】:

    这有帮助吗?

    import tkinter as tk
    from tkinter import Grid, ttk
    
    win = tk.Tk()
    
    btn1 = ttk.Button(win, text='btn1')
    btn1.grid(column=0, row=0, columnspan=1, sticky='EW')
    
    btn2 = ttk.Button(win, text='btn2')
    btn2.grid(column=1, row=0, columnspan=1, sticky='EW')
    
    btn3 = ttk.Button(win, text='btn3')
    btn3.grid(column=2, row=0, columnspan=1, sticky='EW')
    Grid.columnconfigure(win,0, weight=1)
    Grid.columnconfigure(win,1, weight=1)
    Grid.columnconfigure(win,2, weight=1)
    
    
    win.mainloop()
    

    如果需要空间,可以将padx=5添加到btn1.grid()btn3.grid()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-14
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 2018-06-03
      相关资源
      最近更新 更多