Как получить ширину виджета 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())