无法从教科书进入txt文件

Can't get entry from textbook into a txt file

我是一名新 Python 程序员,我正在尝试使用 tkinter 制作一个简单的登录和注册程序。我的 tkinter 导入在顶部,我想我有必要的代码以便从文本框(usernameEntry 和 passwordEntry)中获取条目,然后打开一个 txt 文件并写入。但是,它会打开一个新的 txt 文件(无论我如何命名),但它不会写入其中。

这是我的部分代码:

usernameEntry = Entry(frameUsername, width=15).pack(pady=20)
usernameEntry = StringVar()

passwordEntry = Entry(framePassword, width=15).pack(pady=5)
passwordEntry = StringVar()

def registerUser():
       username = usernameEntry.get()
       password = passwordEntry.get()

       f = open('User and Passes', 'w+')
       f.write(username)
       f.write(password)
       f.close()

buttonRegister = Button(regWindow, text='Confirm Registration', fg='black', width=20,
                            height=2, font=('times new roman', 12), command=registerUser).pack(pady=20)

我也尝试过对文件模式追加,但同样的事情仍然发生。非常感谢任何帮助,提前致谢!

文本文件为空的原因是 StringVar (usernameEntry, passwordEntry) 变量为空,即使 Entry 小部件也是如此不是空的,因为它们没有链接。您的代码有几个问题。

  1. 不要在同一行中使用任何几何管理器 (pack, place, grid) 如果你正在启动一个变量,你要么做

    Entry(frameUsername, width=15).pack(pady=20)
    

    usernameEntry = Entry(frameUsername, width=15)
    usernameEntry.pack(pady=20)`
    

    请不要这样做usernameEntry = Entry(frameUsername, width=15).pack(pady=20),因为它总是return一个None值。

  2. 您可以像 usernameEntry.get() 一样从 Entry 小部件的对象中获取 Entry 小部件中的任何值。 (只要你按照第一步操作)所以只要按照下面的步骤做就可以了。

    usernameEntry = Entry(frameUsername, width=15)
    usernameEntry.pack(pady=20)
    
    passwordEntry = Entry(framePassword, width=15)
    passwordEntry.pack(pady=5)
    
  3. 当使用 StringVar 或任何其他 Tkinter 变量时,您必须像这样

    告诉小部件您正在使用 StringVar
    usernameEntry = StringVar()
    Entry(frameUsername, width=15, textvariable=usernameEntry).pack(pady=20)
    

    当您可以直接从 Entry 小部件获取值时,使用 StringVar 不是很有用,当您想在多个地方更改相同的值时,StringVar 很有用,或者使用trace方法。