Python ';非类型';对象没有属性';儿童';
我这里有很多问题。当我运行代码时,它会像应该的那样创建一个窗口。但当我试图关闭它时,我得到“'NoneType'对象没有属性'children'”。此外,在框中写入文本时,文本会出现在所有三个框中。我做错了什么Python ';非类型';对象没有属性';儿童';,python,tkinter,Python,Tkinter,我这里有很多问题。当我运行代码时,它会像应该的那样创建一个窗口。但当我试图关闭它时,我得到“'NoneType'对象没有属性'children'”。此外,在框中写入文本时,文本会出现在所有三个框中。我做错了什么 from Tkinter import * class Window(Frame): def __init__(self, master=None): self.root = Tk() Frame.__init__(self, master)
from Tkinter import *
class Window(Frame):
def __init__(self, master=None):
self.root = Tk()
Frame.__init__(self, master)
self.master = master
self.init_window()
self.root.geometry("400x300")
self.root.mainloop()
def init_window(self):
self.root.title("GUI")
self.ins = StringVar
self.dele = StringVar
self.upd = StringVar
self.b1 = Button(self.root, text='insert(name,info,date)')
self.b1.grid(row=0,column=0)
self.b2 = Button(self.root, text='delete')
self.b2.grid(row=1, column=0)
self.b3 = Button(self.root, text='update')
self.b3.grid(row=2, column=0)
self.e1 = Entry(self.root, textvariable=self.ins)
self.e1.grid(row=0, column=1)
self.e2 = Entry(self.root, textvariable=self.dele)
self.e2.grid(row=1, column=1)
self.e3 = Entry(self.root, textvariable=self.upd)
self.e3.grid(row=2, column=1)
a = self.e1.get()
b = self.e2.get()
c = self.e3.get()
Window()
这是因为这个
窗口()
和这个def\uuuu init\uuuu(self,master=None):
您没有传入值,所以master默认为None。在底部你应该有
root = Tk()
Window(root)
root.mainloop()
然后删除self.root=Tk()
澄清的完整代码:
from Tkinter import *
class Window(Frame):
def __init__(self, master=None):
self.master = master
Frame.__init__(self, self.master)
self.init_window()
self.master.geometry("400x300")
self.master.title("GUI")
def init_window(self):
self.ins = StringVar
self.dele = StringVar
self.upd = StringVar
self.b1 = Button(self.master, text='insert(name,info,date)')
self.b1.grid(row=0,column=0)
self.b2 = Button(self.master, text='delete')
self.b2.grid(row=1, column=0)
self.b3 = Button(self.master, text='update')
self.b3.grid(row=2, column=0)
self.e1 = Entry(self.master, textvariable=self.ins)
self.e1.grid(row=0, column=1)
self.e2 = Entry(self.master, textvariable=self.dele)
self.e2.grid(row=1, column=1)
self.e3 = Entry(self.master, textvariable=self.upd)
self.e3.grid(row=2, column=1)
a = self.e1.get()
b = self.e2.get()
c = self.e3.get()
root = Tk()
Window(root)
root.mainloop()
您的代码已清理干净,可以运行,但您必须根据需要对其进行修改
from Tkinter import *
class Window():
def __init__(self):
self.root = Tk()
self.init_window()
self.root.geometry("400x300")
self.root.mainloop()
def get_values(self):
print self.e1.get()
print self.e2.get()
print self.e3.get()
def init_window(self):
self.root.title("GUI")
self.b1 = Label(self.root, text='insert(name,info,date)')
self.b1.grid(row=0,column=0)
## self.b2 = Button(self.root, text='delete')
## self.b2.grid(row=1, column=0)
## self.b3 = Button(self.root, text='update')
## self.b3.grid(row=2, column=0)
Button(self.root, text="print entry",
command=self.get_values).grid(row=3, column=0)
self.e1 = Entry(self.root)
self.e1.grid(row=0, column=1)
self.e2 = Entry(self.root, text="info")
self.e2.grid(row=1, column=1)
self.e3 = Entry(self.root, text="date")
self.e3.grid(row=2, column=1)
Window()
请复制并粘贴完整的回溯到您的问题中。我看到一些警告标志,如
StringVar
没有用()
实例化,并且您的项目文件名为TKINTER.py
。