以下是我的示例代碼,其中包含三個標簽和三個輸入欄位:
import tkinter as tk
from tkinter import *
root = Tk()
root.resizable(width=False, height=False)
root.geometry("1200x700")
root.iconbitmap(r'.\autocrest.ico')
root.title('Autocrest Job Card')
root.columnconfigure(0, weight=20)
topRowFrame= Frame(root,relief="ridge", width=1000)
topRowFrame.config(bd=1, relief=tk.SUNKEN)
topRowFrame.columnconfigure(0, weight=1)
topRowFrame.columnconfigure(1, weight=4)
topRowFrame.columnconfigure(2, weight=1)
topRowFrame.columnconfigure(3, weight=4)
topRowFrame.columnconfigure(4, weight=1)
topRowFrame.columnconfigure(5, weight=4)
topRowFrame.grid(column=0,row=0, padx=5, pady=5, sticky=W)
bookingIdLabel=tk.Label(topRowFrame, text="Booking ID")
bookingIdLabel.grid(column=0,columnspan=2, row=0, padx=5, pady=5)
bookingIdEntry=Entry(topRowFrame)
bookingIdEntry.grid(column=2,columnspan=2, row=0, padx=5, pady=5)
noLabel=tk.Label(topRowFrame, text="No")
noLabel.grid(column=4,columnspan=2, row=0, padx=5, pady=5)
noEntry=Entry(topRowFrame)
noEntry.grid(column=6,columnspan=2, row=0, padx=5, pady=5)
dateLabel=tk.Label(topRowFrame, text="Date")
dateLabel.grid(column=8,columnspan=2, row=0, padx=5, pady=5)
dateEntry=Entry(topRowFrame)
dateEntry.grid(column=10,columnspan=2, row=0, padx=5, pady=5)
root.mainloop()
以下代碼中的所有小部件僅占用等于其寬度的空間。我想增加它們之間的空間。柱跨度和重量沒有影響。
uj5u.com熱心網友回復:
為了能夠使小部件隨著螢屏調整大小而調整大小,您需要使用Grid.rowconfigure(root, index=0, weight=1). 根是視窗/框架的名稱,索引是行號,權重應該設定為1。您需要復制并粘貼這行代碼并更改下一行的索引或使用for loop這樣的:
number_of_rows = 5
for i in range(number_of_rows):
Grid.rowconfigure(root, index=i, weight=1)
并對帶有 的列應用相同的內容Grid.columnconfigure()。一旦你完成了這個放置sticky="NSEW",它就會粘在窗戶的每一側并填滿它。
uj5u.com熱心網友回復:
柱跨度和重量沒有影響。
那是因為您告訴grid我們topRowFrame只粘在視窗的左側。因此它不會拉伸以填充整個列。您的使用root.columnconfigure(0, weight=20)使列填充視窗,但小部件不填充列。
sticky如果您想topRowFrame與視窗一樣寬,請嘗試屬性的值“ew”(東、西) :
topRowFrame.grid(column=0,row=0, padx=5, pady=5, sticky="ew")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453976.html
