2017-09-23 177 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): 

應該

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

因此,您的__init__()方法不會被調用,所以你的小部件未創建。

一旦你改正,你會發現,你使用的是列表中的另一個問題,但我認爲你的意思是使用字典:

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

第二線將無法撫養TypeError例外,因爲名單索引必須是整數,而幀對象則不是。

修復通過初始化self.frames到一個空的字典:

self.frames= {} 
+0

謝謝@mhawke。你的迴應解決了我的問題。 –

相關問題