2017-09-23 132 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。你的回应解决了我的问题。 –

相关问题