Как получить ширину виджета tkinter?
Я пытаюсь присвоить ширину виджета (в данном случае метки) переменной.
Что у меня есть до сих пор:
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 ответ:
Вы должны использовать
bbox
против виджетаroot
(на котором был вызван методgrid
, а не виджет, помещенный в сетку).print(root.bbox())
Но без аргументов, это даст ограничивающую рамку корневого виджета. Вы должны указать
column
,row
аргумент (изlbl
):print(root.bbox(0, 0))
Если виджет, который вы хотите получить, не позиционируется как 0/0 столбец/строка, вам также нужно указать
col2
,row2
спор.
grid_bbox(column=None, row=None, col2=None, row2=None)
способ получения tkinter.Tk экземплярВозвращает кортеж целочисленных координат для ограничивающего прямоугольника этого виджета, управляемого сеткой geometry manager.
Если задан столбец, строка, то ограничивающая рамка применяется из ячейки со строкой и столбцом 0 к указанной ячейке. Если заданы COL2 и ROW2, то ограничивающий прямоугольник начинается с этой ячейки.
Возвращаемые целые числа определяют смещение верхнего левого угла в главном виджете, а также ширину и высоту. (
help(root.bbox)
)
В качестве альтернативы вы можете использовать
winfo_width
и ещеwinfo_height
:def getwidth(): print(lbl.winfo_width(), lbl.winfo_height())