Почему настройка ширины фрейма отличается от метки?
(Windows 7, Python 2.7.3)
Вот мой код:
from Tkinter import *
root = Tk()
root.geometry('400x400')
Frame(root, width=20, height=20, bg='red').pack(expand=NO, fill=None, side=LEFT)
Label(root, width=20, height=20, bg='black').pack(expand=NO, fill=None, side=LEFT)
root.mainloop()
И результат такой:
Я установил одинаковую ширину и высоту для рамки и метки, но они показывают разный размер. Более того, этикетка даже не квадратная. Пожалуйста, объясните мне и покажите, как сделать их одинакового размера.
2 ответа
Короткий ответ:
20 - это то же самое, что и 20, но 20 метров - это не то же самое, что 20 километров.
Длинный ответ:
Результат, который вы получили, не такой странный, как вы думаете, потому что width
а также height
варианты Tkinter.Frame()
измеряются в терминах пикселей, тогда как в Tkinter.Label()
:
width
: определяет ширину метки в символахheight
: определяет высоту метки в строках
Как я знаю, Label используется для текста. Определение Label() и Frame() могут работать по-разному для параметров ширины и высоты, поправьте меня, если я не прав.
пример: измените ширину и высоту внутри Label() на 1. Вы увидите пространство для одного символа, заполненного черным цветом в окне tk.
лайк
Label(root, width=1, height=1, bg='black').pack(expand=NO, fill=None, side=LEFT)