Python 使用tkinter';s按钮和条目小部件以更新实例变量

Python 使用tkinter';s按钮和条目小部件以更新实例变量,python,class,oop,tkinter,tkinter-entry,Python,Class,Oop,Tkinter,Tkinter Entry,我正在尝试实现一个小应用程序,让用户登录,登录后的用户可以向文本文件添加/更新/删除内容。以下是我到目前为止所掌握的代码的大致草图: class admin(): def __init__(self): self.app = Tk() . self.name=StringVar() update = Button(self.app,....,comma

我正在尝试实现一个小应用程序,让用户登录,登录后的用户可以向文本文件添加/更新/删除内容。以下是我到目前为止所掌握的代码的大致草图:

class admin():
        def __init__(self):

                self.app = Tk()
                .
                self.name=StringVar()
                update = Button(self.app,....,command=self.update)
                .
                .
                .

        def update():
                #Function to take different entries using Entry widget of tkinter in another window
                anotherapp = Tk()
                nameentry = Entry(anotherapp,textvariable = self.name)
                submitbutton = Button(anotherapp,....,command=submit)
                .
                .

        def submit():
                #Opens a file and adds entries to a textfile. 
                namevar = self.name.get()
                # code to append to file

为了解释以上内容,我有一个类管理员。创建这个类的实例将打开一个窗口,窗口中有创建、更新、删除等按钮。单击其中一个按钮,将调用相应的函数(在同一类中定义)(我使用
lambda:
以防函数有参数,但到目前为止,它没有)

因此,在我提到的代码中,比如我单击Update按钮,它应该调用Update函数,该函数打开另一个窗口并获取文本文件中必须更新的文本(通过Entry小部件)。因此,根据代码,它将更新name的值。单击提交时,函数submit使用
.get()
获取name的字符串值,并将其附加到文本文件中

代码执行时没有错误,但不会从用户处读取输入。当我点击submit按钮时,空行会附加到我的文本文件中

现在我不明白为什么这不起作用。
name
变量在init中定义,可由同一类的函数更新。我已经尝试了很多方法来实现这一点,包括在按钮命令中添加参数、在其他地方定义
name
,等等。尽管我已经解决了错误,但我得到了相同的结果:该文件附加了空行。我还尝试将name设置为类变量,但这不起作用,因为它是使用StringVar()声明的,而StringVar()需要将其作为tkinter窗口的一部分。我想我也尝试过在
update
函数中嵌套
submit
函数,但我不知道为什么没有成功,或者我没有正确实现它

我不知道这是否与tkinter的
StringVar()
.get()
函数的工作有关

我想不出任何其他方法来实施我手头的情况。我愿意接受关于修改代码结构的建议,只要它不是什么重要的东西,并且能够实现我所描述的功能


如果我错过了一些基本的东西,我很抱歉,因为我最近才开始在python中尝试OOP。提前感谢您的帮助。

首先,不要使用两个
Tk()
的实例,而是对任何新窗口使用Toplevel。第二:entry有它自己的
.get()
函数:
entry\u instance.get()
(这让我想到,如果entry甚至有一个textvariable,但它可能有),那么您是否也在代码中使用这个StringVar来处理任何其他内容(像其他小部件一样)另外,在类中定义方法需要
self
参数,除非用
@staticmethod
修饰,这也可能是问题所在,因此在定义方法时使用
def method\u name(self):
它还将帮助访问self。属性。你还得给赛尔夫打电话。使用
self.
的方法,如so
self.method\u name()
因此,在
命令=
kwarg for按钮中,您可以定义
命令=self.method\u name
我在init函数和类外的一个函数中使用了StringVar,但这些都是用于单独的tkinter窗口。您是否可以尝试在将
名称Var
附加到文件之前打印它,并将
self
添加到其他方法(
method\u name(self):
)哦,您对其他小部件没有使用相同的StringVar吗?另外,请尝试
self.nameentry
,然后访问该byt
self.nameentry.get()
,然后查看是否有任何结果