簡體   English   中英

壓縮/縮小tkinter(Python)中小部件之間的垂直間距(又稱:設置垂直行/文本間距/填充)

[英]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()

......它打開了, 最初看起來完全像以前一樣,但現在我可以手動拖動該框垂直縮小它,就像這樣:

在此處輸入圖片說明

注意它是垂直壓縮的! 但是,我該如何以編程方式執行此操作 ,因此不必手動拖動它來進行此操作? 我想從一開始就設置這個緊密的垂直間距,但是無論我在Labelgridrowconfigure更改了哪些參數,如果不使用鼠標手動拖動框來調整尺寸和垂直壓縮框,我似乎都無法使其正常工作文本。

您可以在開始主循環之前以編程方式修改幾何形狀,而不必手動拖動它(將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上運行的結果的屏幕截圖:

在此處輸入圖片說明

有許多方法可以影響垂直間距。

使用gridpack會有用於填充的選項(例如: padyipadyminsize )。 同樣,小部件本身具有許多控制其外觀的選項。 例如,在標簽的情況下,可以將borderwidthhighlightthicknesspady值設置為零,以使小部件不那么高。

對於這些各種選項,不同的系統具有不同的默認值,對於某些選項,默認值大於零。 嘗試配置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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM