当我尝试执行在python中创建的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()
它也没有给我任何错误。
答案 0 :(得分:1)
类__init__()
的{{1}}方法定义中存在拼写错误:
VNMSapp
应该是
def __int__(self, *args, **kwargs):
因此,您的def __init__(self, *args, **kwargs):
方法未被调用,因此不会创建您的小部件。
一旦你纠正了,你会发现使用列表的另一个问题,但我认为你打算使用字典:
__init__()
第二行将无法引发self.frames= []
...
self.frames[F] = frame
异常,因为列表索引必须是整数,而哪些框架对象不是。
通过将TypeError
初始化为空字典来解决此问题:
self.frames