Tkinter在运行时显示空白屏幕的应用程序
问题描述:
当我尝试执行在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()
它不给我任何错误也。
答
没有为VNMSapp
类的__init__()
方法的定义一个错字:
def __int__(self, *args, **kwargs):
应该
def __init__(self, *args, **kwargs):
因此,您的__init__()
方法不会被调用,所以你的小部件未创建。
一旦你改正,你会发现,你使用的是列表中的另一个问题,但我认为你的意思是使用字典:
self.frames= []
...
self.frames[F] = frame
第二线将无法抚养TypeError
例外,因为名单索引必须是整数,而帧对象则不是。
修复通过初始化self.frames
到一个空的字典:
self.frames= {}
谢谢@mhawke。你的回应解决了我的问题。 –