2017-07-07 36 views
0

我想從輸出中定義的第二個窗口中捕獲輸入字段中的數據。當我點擊提交時,獲取以下消息:AttributeError:'NoneType對象沒有'get'屬性。Tkinter條目字段捕獲屬性錯誤:

我覺得這應該是一個簡單的修復,不明白爲什麼我不能從輸入字段捕獲數據?

from tkinter import * 
import xlsxwriter 

class MyFirstGUI: 
    def __init__ (self, master): 
     master.title("Main") 
     master.geometry("400x400+230+160") 

     button1 = Button(master, text="1", command= self.output).grid(row=0, column=0) 


    def output(self): 

     cw1= Toplevel(root) 
     cw1.title("cw1") 
     cw1.geometry("400x300+160+160") 

     self.b2 = Button(cw1, text="Submit",command = self.write_to_xlsx).grid(row=0, column=2) 
     self.l2 = Label(cw1, text="New Specimen").grid(row=0, column=0) 

     self.e2 = Entry(cw1).grid(row=0, column=1) 


    def write_to_xlsx(self): 

     workbook = xlsxwriter.Workbook('tkintertest19.xlsx') 
     worksheet = workbook.add_worksheet() 
     worksheet.write_string('C1', self.e2.get()) 
     workbook.close() 


root = Tk() 
my_gui = MyFirstGUI(root) 
root.mainloop() 

回答

1

你需要做的是分割線

self.l2 = Label(cw1, text="New Specimen").grid(row=0, column=0) 

self.l2 = Label(cw1, text = "New Specimen") 
self.l2.grid(row=0, column=0) 

非直觀的,因爲這可能看起來,在grid/pack/place函數返回None,所以整個shebang(Label().grid())返回None。解決方案只是簡單地將其拆分,以便在使用.get()時可以正確使用。

+0

理由@heather拆分線是因爲在標籤命令結束時的網格(...)實際上返回None,而Label(...)命令返回標籤對象 - 這就是你想要的。 –

+0

@RonNorris,已經編輯添加(在您的評論之前);不要把它放在正確的道路上。 – heather

+0

@heather謝謝!簡單修復 – applestooragnes

相關問題