2017-09-23 19 views
0

Pythonで作成したTkinterアプリケーションを実行しようとすると、空のアプリケーションウィンドウが表示されます。ボタン/ラベルは表示されません。問題は何か?Tkinterアプリケーション実行中に空白の画面が表示される

コードは次のとおりです。

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() 

それはまた私にエラーを与えていません。

答えて

1

クラスVNMSappため__init__()メソッドの定義にタイプミスがあります:

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

あなたのウィジェットがあるので、あなたの__init__()メソッドは、呼び出されていない結果

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

する必要があります作成されていません。

あなたはあなたがリストを使用している追加の問題を発見することを修正し、私はあなたが辞書を使用するためのものと考えてたら:

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

2行目には、リストのでTypeError例外を発生させることに失敗しますインデックスは整数でなければならず、フレームオブジェクトは整数ではありません。

self.frames= {} 
+0

おかげで@mhawke:

は空の辞書にself.framesを初期化することであることを修正します。あなたの応答は私の問題を解決しました。 –

関連する問題