2013-08-27 5 views
5

Я пытаюсь присвоить ширину виджета (в данном случае метку) переменной.Как получить ширину виджета 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}.

Если кто-то мог бы объяснить, почему это так и что было бы шагом к правильному достижению этого, я был бы великодушен.

ответ

8

Вы должны использовать 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

Возвращает кортеж из целочисленных координат для ограничивающей рамки этого виджета управляются менеджером геометрии сетки.

Если COLUMN, ROW присваивается ограничивающая рамка, применяется от ячейки с строкой и столбцом 0 к указанной ячейке. Если COL2 и ROW2 заданы, в этой ячейке начинается ограничивающая рамка.

Возвращенные целые числа определяют смещение верхнего левого угла в главном виджетах, а также ширину и высоту. (help(root.bbox))


В качестве альтернативы вы можете использовать winfo_width и winfo_height:

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

"Если кто-то может объяснить, почему это" – beauxq

+0

@beauxq, Во время ответа на вопрос, я Ждут» я знаю «почему это», поэтому я отправил ответ с «что было бы шагом к правильному достижению этой» части. Теперь я обновил ответ, чтобы включить недостающую часть. Пытаясь ответить на недостающую часть, я нашел альтернативный путь. – falsetru

Смежные вопросы