【问题标题】:Tkinter Entry Field Capture AttributeError: [duplicate]Tkinter 输入字段捕获 AttributeError:[重复]
【发布时间】:2017-07-07 20:17:30
【问题描述】:

我想从输出下定义的第二个窗口中捕获输入字段中的数据。当我单击提交时,收到以下消息: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()

【问题讨论】:

    标签: python tkinter xlsxwriter tkinter-entry


    【解决方案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() 时得到正确的结果。

    【讨论】:

    • @heather 分行的原因是因为 Label 命令末尾的 grid(...) 实际上返回 None,而 Label(...) 命令返回标签对象 --这就是你想要的。
    • @RonNorris,已编辑添加(在您发表评论之前);很抱歉没有马上把它放进去。
    • @heather 谢谢!!轻松修复
    • @RonNorris 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    相关资源
    最近更新 更多