我正在尝试将窗口小部件的宽度(在本例中为标签)分配给变量。
到目前为止我所拥有的:
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}
。
如果有人能够解释为什么会这样,那么正确实现这一目标的步骤将是非常好的。
答案 0 :(得分:11)
您应该对bbox
窗口小部件使用root
(调用grid
方法,而不是放入网格中的窗口小部件。)
print(root.bbox())
但是如果没有参数,它将提供root小部件的边界框。您需要指定column
,row
参数(lbl
):
print(root.bbox(0, 0))
如果要获取小部件的小部件未定位为0/0列/行,则还需要指定col2
,row2
参数。
grid_bbox(column=None, row=None, col2=None, row2=None)
方法 tkinter.Tk实例为几何管理器网格控制的此窗口小部件的边界框返回一个整数坐标元组。
如果给出COLUMN,ROW,则边界框从具有行和列0的单元格应用于指定的单元格。如果给出COL2和ROW2,则边界框从该单元格开始。
返回的整数指定主窗口小部件左上角的偏移量以及宽度和高度。 (
help(root.bbox)
)
或者,您可以使用winfo_width
和winfo_height
:
def getwidth():
print(lbl.winfo_width(), lbl.winfo_height())