Изменить цвет отступа виджета Label в ttk / python - PullRequest
4 голосов
/ 18 января 2012

Я пытаюсь отобразить изображение с помощью ttk / tkinter в python.Изображение имеет белую рамку, и я хочу отобразить это изображение на белом фоне большего размера, чтобы вокруг было много пустого пространства.

Для этого я использую «padx» и «pady» на этикетке с 100px каждый.К сожалению, область заполнения имеет серый цвет.

Теперь я попытался изменить цвет текста и фона метки безрезультатно.Область заполнения остается серой.Затем я поместил метку в виджет «Рамка» и попытался изменить цвет переднего плана и фона рамки.Но, к сожалению, виджет Frame не слушает аргументы width = и height =.Также, если я изменю цвет переднего плана, рамка SUNKEN изменит цвет - действительно круто, но совершенно бесполезно для меня: /.

Может ли кто-нибудь помочь мне с этим?Текущий нерабочий код выглядит так:

style = Style()

style.configure('Dlr.TFrame', background="blue", relief=SUNKEN)
frm = Frame(self, style="Dlr.TFrame") # does not work: ,height=500,width=500)
frm.grid(row=0, column=0, rowspan=8, columnspan=2, sticky=N+S+E+W)

style.configure("Dlr.TLabel", background="white")
style.configure("Dlr.TLabel.padding", background="white") # just guessed ...
self.IMG = Label(frm, style="Dlr.TLabel")
self.IMG.grid(row=0, column=0, padx=100, pady=100)

1 Ответ

3 голосов
/ 18 января 2012

Ваша техника для помещения изображения в рамку и затем установки цвета рамки - правильная техника.

Ширина и высота не работают, потому что и grid, и pack заставляют содержащийся виджет по умолчанию «сжиматься до нужного размера». Это называется распространением геометрии. Вы можете включить или отключить эту функцию, используя методы grid_propagate или pack_propagate на содержащем виджет.

Например, если вы позвоните frm.grid_propagate(False), а затем установите виджет и высоту frm, ширина и высота будут учитываться.

...