Фон Tkinter Frame исчезает, когда я связываю с ним ярлык

Я пытаюсь сделать GUI в Tkinter . Но когда я связываю ярлык в любом кадре , его цвет фона исчезает. Принимая во внимание, что я ожидаю, что весь фон ярлыка будет зеленым.

Мой код вставлен ниже

from Tkinter import * from time import * root = Tk() root.rowconfigure(1, weight=1) root.columnconfigure(1, weight=1) leftFrame = Frame(root, width = 200, height = 200, bg = 'green') leftFrame.grid(row = 1, column = 1) centerFrame = Frame(root, width = 200, height = 200, bg = 'black') centerFrame.grid(row = 1, column = 2) rightFrame = Frame(root, width = 200, height = 200, bg = 'blue') rightFrame.grid(row = 1, column = 3) b = Label(leftFrame, text = "Press me!", bg = 'green') b.pack(side = TOP, expand = YES) root.mainloop() 

2 Solutions collect form web for “Фон Tkinter Frame исчезает, когда я связываю с ним ярлык”

Кадры, как правило, «сжимаются, чтобы соответствовать» их содержимому, если на фрейм не наложено ограничение. Это нормально, ожидается и обычно желательно. Итак, левый кадр попросит, чтобы он был достаточно широким, чтобы соответствовать этикетке, и достаточно высок, чтобы соответствовать этикетке. Кадры в других столбцах, потому что у них нет детей, будет размером, который вы запрашиваете.

Итак, у вас есть один столбец, который хочет быть таким же широким и высоким, как метка, и двумя другими столбцами, которые хотят быть шириной в 200 пикселей. У вас есть один ряд, который хочет быть достаточно высоким, чтобы соответствовать всем, что означает, что он высок, как самый высокий виджет, или 200 пикселей. Это заканчивается тем, что оставляет дополнительное пространство в крайнем левом столбце.

Без указания каких-либо параметров каждая строка будет такой же высокой, как самый высокий виджет в строке, в данном случае 200 пикселей. Каждый столбец будет таким же широким, как и самый широкий виджет. Крайний левый столбец хочет быть шириной рамки, которая сама по себе хочет быть такой же широкой, как метка. Таким образом, самый левый столбец будет только шириной, чем метка. Другие столбцы будут шириной в 200 пикселей, потому что это то, что вы им сказали.

Теперь вы хотите, чтобы зеленый кадр заполнил ячейку, в которой он находится. В вашем случае вы не просили, чтобы рамка заполнила пространство, выделенное так, чтобы оно сжималось. Вам нужно добавить sticky опцию в рамку, чтобы заставить ее «придерживаться» всех четырех краев пространства, которое было дано.

 leftFrame.grid(row=1, column=0, sticky="nsew") 

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

Фактический размер кадра такой же, как у виджета, который он содержит, поэтому все зеленые – это кадр. Все остальное просто наполнителем, чтобы сделать его того же размера, что и другие фреймы. Чтобы рамка заполнила все свободное пространство, используйте «nsew»

Упс, уже ответил ниже. Я не знаю, почему вы импортируете время, но не рекомендуется использовать время в среде Tkinter. Используйте встроенный «после» вместо http://effbot.org/tkinterbook/widget.htm

 from Tkinter import * root = Tk() root.rowconfigure(1, weight=1) root.columnconfigure(1, weight=1) leftFrame = Frame(root, width = 200, height = 200, bg = 'green') leftFrame.grid(row = 1, column = 1, sticky="nesw") centerFrame = Frame(root, width = 200, height = 200, bg = 'black') centerFrame.grid(row = 1, column = 2) rightFrame = Frame(root, width = 200, height = 200, bg = 'blue') rightFrame.grid(row = 1, column = 3) b = Label(leftFrame, text = "Press me!", bg = 'green') b.grid() root.mainloop() 
  • Почему Photoimage работает медленно?
  • Отсутствует изображение Python
  • progressbar в Tkinter с меткой внутри
  • Процесс завершен с кодом выхода 139 после обновления с python 2.7.6 64 бит до 2.7.10 32 бит
  • Прочитайте изображение с OpenCV и покажите его с помощью Tkinter
  • Подклассификация Tkinter для создания пользовательского виджета
  • Экстремальный график Matplotlib (график в tkinter)
  • Поиск определенного блока кода в тексте
  • как обновить пределы x в фигуре matplotlib в tkinter
  • Переключение между кадрами в меню tkinter
  • _tkinter.TclError: нет отображаемого имени и нет переменной окружения $ DISPLAY
  • Python - лучший язык программирования в мире.