Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter窗口显示为空_Python_Tkinter - Fatal编程技术网

Python tkinter窗口显示为空

Python tkinter窗口显示为空,python,tkinter,Python,Tkinter,我很困惑为什么这段代码在窗口中不能生成任何东西。标签、文本条目和按钮都是在类中创建的。它们的主框架是根,通过init。我知道这是一个非常琐碎的问题,但它与我正在读的书中的内容非常相似,但这本书已经有14年的历史了。谁能解释一下我忽略了什么 from tkinter import * import hashlib class Login: def __init__(self, master): ##Set frame as root window fr

我很困惑为什么这段代码在窗口中不能生成任何东西。标签、文本条目和按钮都是在类中创建的。它们的主框架是根,通过init。我知道这是一个非常琐碎的问题,但它与我正在读的书中的内容非常相似,但这本书已经有14年的历史了。谁能解释一下我忽略了什么

from tkinter import *
import hashlib

class Login:

    def __init__(self, master):

        ##Set frame as root window
        frame = Frame(master)
        frame.pack()

        Label(top, text="Username").pack()

        ##Enter Username
        self.username = Entry(frame)
        self.username.pack()
        self.username.set_focus() #keyboard entry starts here

        Label(top, text="Password").pack()

        ##Enter Password
        self.password = Entry(frame)
        self.password.pack()

        ##Login
        self.login = Button(frame, text="Login", width=10)
        self.login.pack()

def main():
    root = Tk()
    root.geometry("400X400+300+300")
    app = Login(root)
    root.mainloop()

main()

创建类的实例时使用的是root,但在类中是top

以下是我为它工作所做的:

from Tkinter import *
import hashlib

class Login:

    def __init__(self, master):

        ##Set frame as root window
        frame = Frame(master)
        frame.pack()


        Label(frame, text="Username").pack()

        ##Enter Username
        self.username = Entry(frame)
        self.username.pack()


        Label(frame, text="Password").pack()

        ##Enter Password
        self.password = Entry(frame)
        self.password.pack()

        ##Login
        self.login = Button(frame, text="Login", width=10)
        self.login.pack()

def main():
    root = Tk()

    app = Login(root)
    root.mainloop()

main()

因此,我在Python 2下对此进行了测试,并修复了四个问题:

  • tkinter
    更改为
    tkinter
    (不过Python 3使用
    tkinter
    ,所以我假设您正在使用它)
  • 修复几何体字符串(使用小写x)以避免错误:错误的几何体说明符
  • 顶部
    更改为
    框架
    ,以避免出现
    名称错误
  • set\u focus
    更改为
    focus\u set
    ,以避免出现
    AttributeError
  • 有了这些更改,脚本将按预期工作

    (我刚刚确认,如果跳过第一个更改,它也可以在Python 3下工作)


    您是否在某个没有显示异常的IDE下运行此功能?

    标签(top,text=“Username”).pack()中的“top”是什么。你是不是漏掉了一些代码?应该是“框架”。我切换了它,但没什么区别,窗口里什么也没显示。我无意中打开了两个实例。“顶端”是原因。我假设如果出现一个窗口,那么就不会发生错误,但是在我发布之后,我注意到了语法错误。