扩展标签小部件以使用网格填充单元格宽度

时间:2018-10-31 07:18:37

标签: python-3.x tkinter

试图在Python中使用tkinter来使标签完全填充单元格。我已经尝试过此代码,从本质上讲,IMO无法使“ EW”正常工作。请帮忙!

from tkinter import *

root = Tk()
root.configure(background='#696969')
root.title('Title')
root.geometry('310x510')
root.resizable(False, False)


f = Frame(root, width=300, height=500, bg='silver', bd=0, cursor='arrow', highlightbackground='silver', highlightcolor='silver', highlightthickness=0, relief=FLAT)
f.grid(row = 0, column = 0, padx = 5, pady = 5, ipadx = 0, ipady = 0, rowspan = 1, columnspan = 1, sticky = 'NSEW')
f.grid_propagate(0)

l = Label(f, text = 'Algorithms', justify = CENTER, bd = 0, anchor = CENTER, bg = '#313233', fg = 'white', wraplength = 0, font = 'Helvetica 9 bold')
l.grid(row = 0, column = 0, padx = 0, pady = 0, ipadx = 0, ipady = 0, rowspan = 1, columnspan = 1, sticky = 'EW')
l.grid_propagate(0)


root.mainloop()

1 个答案:

答案 0 :(得分:1)

实际上,标签确实完全填充了单元格。问题在于该列的宽度仅与其内容(即Label的宽度)一样宽。您可以通过在Label上使用width=...来使Label以及因此的列变宽,但是由于Label的宽度以字符为单位进行度量,因此很难使其精确地达到所需的宽度。 / p>

您真正想要的是将列扩展到框架的宽度。您可以通过为列weightcolumnconfigure来实现。相对于它们具有的weight,未使用的宽度被分配给具有非零weigth的列(具有weight=2的列将得到具有weight=1的列的两倍空间)。因为只有一列,所以基本上可以使用任何非零数字来将所有未使用的空间分配给该列。由于我们是在谈论Frame内部的网格,因此您应该在Frame小部件上调用columnconfigure

f.columnconfigure(0, weight=1)