Tkinter Entry Field Capture AttributeError:

Tkinter Entry Field Capture AttributeError:

我想从输出下定义的第二个 window 捕获输入字段中的数据。当我单击提交时收到以下消息: AttributeError: 'NoneType object has no attribute 'get'.

我觉得这应该很容易解决,但不明白为什么我不能从输入字段中捕获数据?

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

你需要做的就是分割线

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 函数 return None,所以整个 shebang (Label().grid()) returns None。解决办法就是简单地将它拆分,以便在使用 .get() 时得到正确的东西。