2015-10-23 49 views
0

我在這裏有一堆問題。當我運行代碼時,它應該創建一個窗口。但是,當我嘗試關閉它時,我得到「'NoneType'對象沒有屬性'children'」。另外,當在框中書寫文本時,文本出現在所有三個框中。我究竟做錯了什麼?'NoneType'對象沒有屬性'children'

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() 

Here is the screenshot

+0

請將*完整追溯*複製並粘貼到您的問題中。 –

+0

我看到一些像'StringVar'這樣的警告信號沒有用'()'實例化,而你的項目文件被命名爲'TKINTER.py'。 – TigerhawkT3

回答

0

這是因爲這個Window()的,這def __init__(self, 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() 
0

您的代碼,清理所以它運行,但你將有你想要它做的事情,根據修改它。

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() 
相關問題