[英]condensing/reducing vertical spacing between widgets in tkinter (Python) (AKA: setting vertical line/text spacing/padding)
這是我的程序:
import tkinter as tk
#Create main window object
root = tk.Tk()
#build GUI
for i in range(5):
tk.Label(root, text="hello", height=0).grid(row=i)
#mainloop
root.mainloop()
它產生以下內容(在Xubuntu 16.04 LTS中運行)
請注意各行之間所有多余的垂直空間。 我不要那個! 如何減少呢?
如果我改為運行以下代碼:
import tkinter as tk
#Create main window object
root = tk.Tk()
#build GUI
for i in range(5):
tk.Label(root, text="hello", height=0).grid(row=i)
tk.Grid.rowconfigure(root, i, weight=1) #allow vertical compression/expansion to fit window size after manual resizing
#mainloop
root.mainloop()
......它打開了, 最初看起來完全像以前一樣,但現在我可以手動拖動該框垂直縮小它,就像這樣:
注意它是垂直壓縮的! 但是,我該如何以編程方式執行此操作 ,因此不必手動拖動它來進行此操作? 我想從一開始就設置這個緊密的垂直間距,但是無論我在Label
, grid
或rowconfigure
更改了哪些參數,如果不使用鼠標手動拖動框來調整尺寸和垂直壓縮框,我似乎都無法使其正常工作文本。
您可以在開始主循環之前以編程方式修改幾何形狀,而不必手動拖動它(將0.6更改為所需的減少百分比):
import tkinter as tk
#Create main window object
root = tk.Tk()
#build GUI
for i in range(5):
label = tk.Label(root, text = 'hello')
label.grid(row=i)
tk.Grid.rowconfigure(root, i, weight=1) #allow vertical compression/expansion to fit window size after manual resizing
#mainloop
root.update()
root.geometry("{}x{}".format(root.winfo_width(), int(0.6*root.winfo_height())))
root.mainloop()
這是在帶有Python 3.5.2的Xubuntu 16.04 LTS上運行的結果的屏幕截圖:
有許多方法可以影響垂直間距。
使用grid
或pack
會有用於填充的選項(例如: pady
, ipady
, minsize
)。 同樣,小部件本身具有許多控制其外觀的選項。 例如,在標簽的情況下,可以將borderwidth
, highlightthickness
和pady
值設置為零,以使小部件不那么高。
對於這些各種選項,不同的系統具有不同的默認值,對於某些選項,默認值大於零。 嘗試配置GUI的視覺效果時,第一步是閱讀文檔,並查找影響視覺外觀的選項。 然后,您可以開始嘗試使用它們,看看哪些可以給您所需的外觀。
在您的特定情況下,這是您可以獲得的最緊湊的產品:
label = tk.Label(root, highlightthickness=0, borderwidth=0, pady=0, text="hello")
label.grid(row=i, pady=0, ipady=0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.