无法从教科书进入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
小部件也是如此不是空的,因为它们没有链接。您的代码有几个问题。
不要在同一行中使用任何几何管理器 (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
值。
您可以像 usernameEntry.get()
一样从 Entry
小部件的对象中获取 Entry
小部件中的任何值。 (只要你按照第一步操作)所以只要按照下面的步骤做就可以了。
usernameEntry = Entry(frameUsername, width=15)
usernameEntry.pack(pady=20)
passwordEntry = Entry(framePassword, width=15)
passwordEntry.pack(pady=5)
当使用 StringVar
或任何其他 Tkinter 变量时,您必须像这样
告诉小部件您正在使用 StringVar
usernameEntry = StringVar()
Entry(frameUsername, width=15, textvariable=usernameEntry).pack(pady=20)
当您可以直接从 Entry
小部件获取值时,使用 StringVar
不是很有用,当您想在多个地方更改相同的值时,StringVar
很有用,或者使用trace
方法。
我是一名新 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
小部件也是如此不是空的,因为它们没有链接。您的代码有几个问题。
不要在同一行中使用任何几何管理器 (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
值。您可以像
usernameEntry.get()
一样从Entry
小部件的对象中获取Entry
小部件中的任何值。 (只要你按照第一步操作)所以只要按照下面的步骤做就可以了。usernameEntry = Entry(frameUsername, width=15) usernameEntry.pack(pady=20) passwordEntry = Entry(framePassword, width=15) passwordEntry.pack(pady=5)
当使用
告诉小部件您正在使用StringVar
或任何其他 Tkinter 变量时,您必须像这样StringVar
usernameEntry = StringVar() Entry(frameUsername, width=15, textvariable=usernameEntry).pack(pady=20)
当您可以直接从
Entry
小部件获取值时,使用StringVar
不是很有用,当您想在多个地方更改相同的值时,StringVar
很有用,或者使用trace
方法。