Кнопки и метки не будут отображаться в окне - PullRequest
0 голосов
/ 11 июля 2019

Кнопки и метки не будут отображаться в моем окне. Если я удалю себя из круглых скобок (или вместо этого вставлю контроллер), кнопки появятся. Однако кнопки не поднимают нижнее окно вперед, как это должно быть. Я использовал похожий код, который использовал pack, и он работал хорошо. Я не могу найти проблему, почему использование сетки не будет работать. Я немного новичок в tkinter, так что, возможно, я упускаю что-то очевидное.

import tkinter as tk


LARGE_FONT= ("Verdana", 12)
NORM_FONT= ("Verdana", 10)
SMALL_FONT= ("Verdana", 8)


class mGui(tk.Tk):  

    def __init__(self, *args, **kargs): 

       tk.Tk.__init__(self, *args, **kargs) 
       container = tk.Frame(self)
       container.grid_rowconfigure(0, weight=1)
       container.grid_columnconfigure(0, weight=1)

       self.frames = {}  

       for F in (StartPage, PageOne):

            frame = F(container, self)

            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")



       self.show_frame(StartPage)   

    def show_frame(self, cont):  
        frame = self.frames[cont]
        frame.tkraise()   


class StartPage(tk.Frame):  

    def __init__(self, parent, controller):  
        tk.Frame.__init__(self, parent) 
        label_1 = tk.Label(self, text = "Start Page", font = LARGE_FONT)
        label_1.grid(row = 0, column = 0) 


        button1 = tk.Button(self,text = "Go", command = lambda: controller.show_frame(PageOne))
        button1.grid(row = 1, column = 0)     

class PageOne(tk.Frame):  

    def __init__(self, parent, controller): 
        tk.Frame.__init__(self, parent) 
        label_1 = tk.Label(self, text = "Page One", font = LARGE_FONT)
        label_1.grid(row = 1, column = 4)  

        button1 = tk.Button(self, text = "Go Back", command = lambda: controller.show_frame(StartPage))
        button1.grid(row = 4, column = 1)              


app = mGui()
app.mainloop()

1 Ответ

1 голос
/ 11 июля 2019

Вам необходимо добавить вызов в диспетчер макетов grid() для container Frame, как показано:

         .
         .
         .

class mGui(tk.Tk):

    def __init__(self, *args, **kargs):

       tk.Tk.__init__(self, *args, **kargs)
       container = tk.Frame(self)
       container.grid_rowconfigure(0, weight=1)
       container.grid_columnconfigure(0, weight=1)

       container.grid()  # ADD THIS.

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