Python tkinter窗口显示为空
我很困惑为什么这段代码在窗口中不能生成任何东西。标签、文本条目和按钮都是在类中创建的。它们的主框架是根,通过init。我知道这是一个非常琐碎的问题,但它与我正在读的书中的内容非常相似,但这本书已经有14年的历史了。谁能解释一下我忽略了什么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
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
,所以我假设您正在使用它)顶部
更改为框架
,以避免出现名称错误
set\u focus
更改为focus\u set
,以避免出现AttributeError
您是否在某个没有显示异常的IDE下运行此功能?标签(top,text=“Username”).pack()中的“top”是什么。你是不是漏掉了一些代码?应该是“框架”。我切换了它,但没什么区别,窗口里什么也没显示。我无意中打开了两个实例。“顶端”是原因。我假设如果出现一个窗口,那么就不会发生错误,但是在我发布之后,我注意到了语法错误。