Проблема в том, что вы переопределяете self
как фрейм, который находится в master
, а не в самой странице.Вы никогда не должны переопределять self
таким образом.Что происходит, когда вы уничтожаете страницу, но все виджеты находятся во втором фрейме.Этот второй кадр находится в master, поэтому он не будет уничтожен при уничтожении страницы.
Если вы действительно хотите рассматривать свою «страницу» как объект, каждый созданный вами виджет на «странице» должен быть дочерним элементом self
или одним из его потомков.
Не связанный с этой проблемой, вы используете place
.place
не приведет к увеличению или уменьшению содержащейся рамки.Если нет очень веской причины использовать place
, вам следует использовать pack
или grid
.Если вы используете place
, вы можете установить разумный размер для содержащего виджета.
В следующем примере показан правильный способ создания страницы.Обратите внимание, что он не переопределяет self
, но вместо этого помещает все непосредственно в реальное self .Кроме того, он использует pack
, а не place
.
class StartPage(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.create_button = tk.Button(self,text='CREATE +',
command=lambda: master.switch_frame(Create_list),
width=15,height=2)
self.create_button.pack(side="top")
Кроме того, вам, вероятно, следует использовать соответствующие параметры при упаковке рамки, чтобы она заполняла окно:
self._frame.pack(fill="both", expand=True)