如何获取tkinter小部件的宽度?

时间:2013-08-27 09:13:52

标签: python python-3.x tkinter width

我正在尝试将窗口小部件的宽度(在本例中为标签)分配给变量。

到目前为止我所拥有的:

from tkinter import *

def getwidth():
    print(lbl.bbox())

root = Tk()

lbl = Label(root, text="test text")
lbl.grid(row=0)
btn = Button(root, text="GO", command=getwidth)
btn.grid(row=1)

root.mainloop()

我原以为bbox()会返回左上角的偏移量以及宽度和高度,但返回的值为{0, 0, 0, 0}

如果有人能够解释为什么会这样,那么正确实现这一目标的步骤将是非常好的。

1 个答案:

答案 0 :(得分:11)

您应该对bbox窗口小部件使用root(调用grid方法,而不是放入网格中的窗口小部件。)

print(root.bbox())

但是如果没有参数,它将提供root小部件的边界框。您需要指定columnrow参数(lbl):

print(root.bbox(0, 0))

如果要获取小部件的小部件未定位为0/0列/行,则还需要指定col2row2参数。

  

grid_bbox(column=None, row=None, col2=None, row2=None)方法   tkinter.Tk实例

     

为几何管理器网格控制的此窗口小部件的边界框返回一个整数坐标元组。

     

如果给出COLUMN,ROW,则边界框从具有行和列0的单元格应用于指定的单元格。如果给出COL2和ROW2,则边界框从该单元格开始。

     

返回的整数指定主窗口小部件左上角的偏移量以及宽度和高度。 (help(root.bbox)


或者,您可以使用winfo_widthwinfo_height

def getwidth():
    print(lbl.winfo_width(), lbl.winfo_height())