Python 3.x 如何在tkinter中打印Entry()的值?

Python 3.x 如何在tkinter中打印Entry()的值?,python-3.x,tkinter,tkinter-entry,Python 3.x,Tkinter,Tkinter Entry,我只是想打印输入字段的值,它告诉我它没有定义。我在网上找了很久了。我尝试的最后一件事是将self添加为add_student的参数,但没有成功 这是密码 from tkinter import * class window(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.master = master self.widgets()

我只是想打印输入字段的值,它告诉我它没有定义。我在网上找了很久了。我尝试的最后一件事是将
self
添加为
add_student
的参数,但没有成功

这是密码

from tkinter import *

class window(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master = master
        self.widgets()

    def add_student(self):
        print(f"Student's name (first, last): {self.fname_textbox}, {self.lname_textbox}")

    def widgets(self):

        self.master.title("Student Test Score & Grade")
        self.master.minsize(200,200)

        """ Labels """
        # First name
        self.fname_label = Label(root, text='First Name: ')
        self.fname_label.grid(row=0, column=0, padx=5, pady=5)

        # Last Name
        self.lname_label = Label(root, text='Last name: ')
        self.lname_label.grid(row=1, column=0, padx=5, pady=5)

        """ Entry boxes """
        # First Name
        self.fname_textbox = Entry(root, width=30)
        self.fname_textbox.grid(row=0, column=1, padx=5)

        # Last name
        self.lname_textbox = Entry(root, width=30)
        self.lname_textbox.grid(row=1, column=1, padx=5)

        """ Buttons """
        # Add Button
        self.add_btn = Button(root, text="Add Student", command=self.add_student).grid(row=4, column=2, padx=2, pady=2)

if __name__=="__main__":
    root = Tk()
    root.resizable(width=False, height=False)
    app = window(root)
    root.mainloop()

它打印了这个

Student's name (first, last): .!entry, .!entry2
而不是:
学生姓名(第一名,最后一名):John,Doe


这是什么意思?

啊,试试这样:

def __init__(self, master):
    self.nameEntry = Entry(master)
    self.contents = StringVar()
    self.nameEntry["textvariable"]=self.contents
    self.nameEntry.pack()
    self.nameEntry.grid(row=0,column=1)
    self.buttonSave = Button(master,text="Save",command=self.save).grid(row=9,columnspan=2, sticky=W+E+N+S)

def save(self):
    print self.nameEntry.get()

您需要获取条目的值,以便在打印语句中使用它们 您可以通过以下方式完成此操作:

firstname = self.fname_textbox.get() 
lastname = self.1fname_textbox.get()

在打印和在打印语句中使用这些值之前

当您在
初始化过程中调用
.add\u student()
时,
.widgets()
尚未被调用,因此您的小部件实际上不存在。将该调用下移一行-或者完全删除它,可能是由于按钮单击导致的调用是您实际希望发生的调用。然后它抛出一个NameError
NameError:name'add_student'未定义
。哦,您需要按钮的
命令=
前面的
self.
。对,这解决了该问题。现在,它实际上并没有将我键入的内容打印到Entry()文本框中。它返回学生的名字(第一个,最后一个):。!进入entry2
self.fname\u textbox
(例如)是条目小部件本身
self.fname\u textbox.get()
是该条目的内容。将这两个函数都放入一个文件中,这就是我得到的…```文件“win.py”,第12行打印self.nameEntry.get()语法错误:无效语法```