K K Satapathy
K K Satapathy

Reputation: 3

Tkinter Application showing blank screen while running

When I try to execute my Tkinter application created in python, it is giving me a blank application window. No Buttons/Labels are displaying. What may be the Issue ?

Codes are as follows:

import tkinter as tk
from tkinter import ttk

LARGE_FONT=("Verdana", 18)

class VNMSapp(tk.Tk):

    def __int__(self, *args, **kwargs):

        tk.Tk.__init__(self, *args, **kwargs)
        container=tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.frames= []
        for F in (StartPage, AdminPage):

            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 = tk.Label(text="THIS IS HOME PAGE", font=LARGE_FONT)
        label.pack()

        btn1 = tk.Button(self, text="Enter ADMIN PAGE",
                         command=lambda: controller.show_frame(AdminPage))
        btn1.pack()

class AdminPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        label = tk.Label(text="THIS IS ADMIN PAGE", font=LARGE_FONT)
        label.pack()

        btn1 = tk.Button(self, text="Enter HOME PAGE",
                         command=lambda: controller.show_frame(StartPage))
        btn1.pack()


app = VNMSapp()
app.mainloop()

It is not giving me any error also.

Upvotes: 0

Views: 1701

Answers (1)

mhawke
mhawke

Reputation: 87074

There is a typo in the definition of the __init__() method for class VNMSapp:

def __int__(self, *args, **kwargs):

should be

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

As a result your __init__() method is not being called, so your widgets are not created.

Once you correct that you will find an additional problem where you are using a list, but I think that you meant to use a dictionary:

self.frames= []
...
self.frames[F] = frame

the second line will fail raising a TypeError exception because list indices must be integers, which frame objects are not.

Fix that by initialising self.frames to an empty dict:

self.frames= {}

Upvotes: 1

Related Questions