缩小/缩小tkinter(Python)中小部件之间的垂直间距(AKA:设置垂直行/文本间距/填充)

时间:2016-09-15 03:27:44

标签: python tkinter spacing

这是我的计划:

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中运行)

enter image description here

注意文本行之间的所有额外垂直空间。我不想要那个!我该如何减少它?

如果我改为运行此代码:

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()

...它打开了,最初看起来和以前完全一样,但现在我可以手动垂直拖动框以缩小它,如下所示:

enter image description here

注意它的垂直压缩程度是多少! 但是,我如何以编程方式执行此操作,因此我不必手动拖动它以实现这一目标?我想从一开始就设置这个紧密的垂直间距,但无论我在Labelgridrowconfigure中更改了哪些参数,我似乎都无法使其无效我用鼠标手动拖动框来调整大小并垂直压缩文本。

2 个答案:

答案 0 :(得分:0)

您可以在启动主循环之前以编程方式修改几何体,而不是手动拖动它(将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上运行的结果的屏幕截图:

enter image description here

答案 1 :(得分:0)

影响垂直间距的方法有很多种。

当您使用gridpack时,可以选择填充(例如:padyipadyminsize)。此外,小部件本身有许多控制其外观的选项。例如,对于标签,您可以将borderwidthhighlightthicknesspady值设置为零,以使窗口小部件更轻。

不同的系统对这些不同的选项有不同的默认值,对于某些选项,默认值大于零。在尝试配置GUI的可视方面时,第一步是阅读文档,并查找影响视觉外观的选项。然后,您可以开始尝试使用它们,看看哪些可以满足您的需求。

在您的具体情况下,这是您可以获得的最紧凑:

label = tk.Label(root, highlightthickness=0, borderwidth=0, pady=0, text="hello")
label.grid(row=i, pady=0, ipady=0)