tkinter窗口为空,不显示文本

时间:2017-02-21 14:53:56

标签: python tkinter

我在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行,但结果相同。脚本运行没有错误,但窗口是空的。

谢谢!

2 个答案:

答案 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__需要两个下划线 - 史蒂芬萨默斯

我只是盲目地盯着线路寻找出错的地方..谢谢。