Цвет виджета Tkinter не меняется - PullRequest
0 голосов
/ 07 декабря 2018

Когда я помещаю виджет в рамку, цвет рамки исчезает.Если раньше он был «черным», то после помещения widget(label) в рамку цвет снова становится белым.Вот мой код:

from tkinter import *
root = Tk()
root.geometry("700x600")
f = Frame(root, height = 400, width = 400, bg = 'black')
f.pack()
id = Label(f, text = "Email:", fg = 'blue', font = ('Kristen ITC', 18))
id.pack()

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

По умолчанию виджеты сжимаются или расширяются, чтобы соответствовать их содержимому.Когда вы добавляете кнопку, рамка сжимается, чтобы соответствовать.

Похоже, вы хотите, чтобы кадр занимал только часть корневого окна.Вместо того, чтобы явно указывать ширину и высоту фрейма, обычно лучше, чтобы tkinter сделал это за вас.Заполните фрейм нужными виджетами, и пусть tkinter решит, насколько большим должен быть фрейм.Затем используйте соответствующие опции для grid или pack, чтобы расположить их логически.Когда tkinter разрешено делать виджеты нужного размера, вы получите гораздо более отзывчивый пользовательский интерфейс.

Например, если вы установите параметры fill и expand при вызове packна раме он не будет сжиматься, чтобы соответствовать.Если вам позже понадобится добавить больше виджетов, вам не нужно будет изменять другие части кода, чтобы они соответствовали.

f.pack(fill="both", expad=True)

Вы также можете отключить эту функцию «сжать, чтобы подогнать», вызвав f.pack_propagate(False), но это редко является правильным решением, потому что оно заставляет вас вычислять размеры, и ваши вычисления могут быть неверными, если вы запускаете программу в системе с другими шрифтами или разными разрешениями.

0 голосов
/ 07 декабря 2018

Ваш Frame изменяет свой размер до Label.Вам необходимо установить ...:

...
f.pack_propagate(False)
f.pack()
...

, чтобы Frame сохранял свое измерение без влияния дочерних виджетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...