我正在尝试实现一个登录用户的小应用程序,登录后的用户可以添加/更新/删除文本文件的内容。这是迄今为止我所拥有的代码的粗略草图:
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:
,但到目前为止还没有)。
因此,在我提到的代码中,假设我单击“更新”按钮,它应该调用更新函数,该函数会打开另一个窗口并获取必须在文本文件中更新的文本(通过 Entry 小部件)。所以根据代码它会更新 name 的值。单击提交时,函数 submit 使用 .get()
获取 name 的字符串值,并将其附加到文本文件中。
代码执行时没有错误,但它不会读取用户的输入。当我点击提交按钮时,空白行会附加到我的文本文件中。
现在我不明白为什么这不起作用。 name
变量在 init 中定义,可以被同一个类的函数更新。我已经尝试了很多方法来完成这项工作,包括在按钮命令中添加参数,在其他地方定义 name
等。即使我已经解决了错误,我也得到了相同的结果:文件被附加空行。我还尝试将名称命名为类变量,但这不起作用,因为它是使用 StringVar() 声明的,需要它成为 tkinter 窗口的一部分。我想我也试过在 submit
函数中嵌套 update
函数,但我不知道为什么这不起作用,或者我没有正确实现它。
我不知道这是否与 tkinter 的 StringVar()
和 .get()
函数的工作有关。
我想不出任何其他方式来实现我手头的情况。我愿意接受关于更改代码结构的建议,只要它不是主要的主要内容并且设法实现我所描述的功能。
如果我错过了一些基本的东西,我很抱歉,因为我最近才开始在 python 中尝试 OOP。并提前感谢您的帮助。