我在tkinter上运行了一个简单的教程,但由于一些奇怪的原因,我的窗口显示为空,并且没有显示' text ='任何。我浏览了所有相关的Q(这里有一些),但没有人提供解决方案。
脚本在没有错误消息的情况下执行,但窗口不是空的。任何建议都会受到赞赏,因为我觉得我探索了所有死路一条。
以下是代码:
import tkinter as tk
LARGE_FONT=("Verdana", 12)
class SeaofBTCapp (tk.Tk):
def _init_(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 = {}
frame = StartPage(container, self)
self.frames[StartPage] = 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(self, text="Start Page", font=LARGE_FONT)
label.pack(pady=10, padx=10)
app= SeaofBTCapp()
app.mainloop()
Python版本:3.5.2 | Anaconda 4.1.1(64位)
关于该主题的一些其他Q讨论不使用.frame和.pack,我尝试删除.frame行或.pack行,但结果相同。脚本运行没有错误,但窗口是空的。
谢谢!
答案 0 :(得分:1)
此代码无法正常工作的原因是您没有正确显示init
。您使用了_init_
,每个应该有2个下划线,例如__init__
。这是你应该做的:
import tkinter as tk
LARGE_FONT=("Verdana", 12)
class SeaofBTCapp (tk.Tk):
def _init_(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 = {}
frame = StartPage(container, self)
self.frames[StartPage] = 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(self, text="Start Page", font=LARGE_FONT)
label.pack(pady=10, padx=10)
app = SeaofBTCapp()
app.mainloop()
另外,你使用的是python 3.5,这段代码在python 2中效果更好。
希望我能提供帮助:)
答案 1 :(得分:0)
根据史蒂文的回答:
__init__需要两个下划线 - 史蒂芬萨默斯
我只是盲目地盯着线路寻找出错的地方..谢谢。