0
在下面的最小示例代碼中,您可以將當前位於3的最後一個範圍()更改爲6,並注意到與按鈕一起運行時,所有帶有按鈕的框架都會變得更小。我已經配置了6列「lower_frame」,全部是重量1.預期的結果是,無論我放入多少個按鈕,都有6個相同寬度的空列。如果我在其中放置3個按鈕,如下面的示例默認情況下那樣,這些按鈕非常大,只留下約1個按鈕的空間。如果我放入6個按鈕,它們會填充空間並且每個都會變小。Python - 重量大小的框架
無論我實際放置在單元格中有多少個小部件,我如何實現具有等寬列的預期結果?這裏的目標是基於屏幕比例而不是像素大小的這些按鈕的標準大小,並且無論按鈕的數量如何,都始終保持相同。我意識到我可以用邊界框來做一堆數學運算,並且在運行時以編程方式設置大小,但這看起來像是矯枉過正,缺乏優雅。
最小例如:
import Tkinter as tk
import ttk
mods = {}
modBtns = {}
root = tk.Tk()
upper_frame = ttk.Frame(master=root)
lower_frame = ttk.Frame(master=root)
right_frame = ttk.Frame(master=root)
root.columnconfigure(0, weight=3)
root.columnconfigure(1, weight=1)
root.rowconfigure(0, weight=1)
root.rowconfigure(1, weight=5)
for i in range(6):
lower_frame.columnconfigure(i, weight=1)
for i in range(5):
lower_frame.rowconfigure(i, weight=1)
upper_frame.grid(column=0, row=0, sticky=tk.N + tk.S + tk.E + tk.W)
lower_frame.grid(column=0, row=1, sticky=tk.N + tk.S + tk.E + tk.W)
right_frame.grid(column=1, row=0, sticky=tk.N + tk.S + tk.E + tk.W)
for i in range(3):
mods[i] = ttk.Frame(master=lower_frame)
mods[i].columnconfigure(0, weight=1)
mods[i].rowconfigure(0, weight=1)
modBtns[i] = ttk.Button(master=mods[i], text="mod{0}".format(i))
modBtns[i].grid(column=0, row=0, sticky=tk.N + tk.S + tk.E + tk.W)
mods[i].grid(column=i, row=0, sticky=tk.N + tk.S + tk.E + tk.W)
root.geometry("700x700+0+0")
root.mainloop()
我意識到這個例子並不是最小的,我只是試圖反映我的實際項目的佈局。 – linus72982