将输入框的输入保存到 .txt 文件中
Saving input from entry box into .txt files
我想将输入框的输入保存到 .txt
文件中,它适用于第一个代码而不是第二个代码,但我需要使用的是第二个代码。
代码 1:
import tkinter as tk
def f():
def save():
a = t.get()
f = open((a + '.txt'), 'w')
f.write(a)
f.close()
return
top = tk.Tk()
t = tk.StringVar()
e = tk.Entry(top, textvariable = t).pack()
b = tk.Button(top, text = 'Save as a file', command = save).pack()
top.mainloop()
f()
代码 2:
import tkinter as tk
root = tk.Tk()
def f():
def save():
a = t.get()
f = open((a + '.txt'), 'w')
f.write(a)
f.close()
return
top = tk.Tk()
t = tk.StringVar()
e = tk.Entry(top, textvariable = t).pack()
b = tk.Button(top, text = 'Save as a file', command = save).pack()
top.mainloop()
button = tk.Button(root, text="Button",command=f).pack()
root.mainloop()
您没有在第二个代码中调用 save() 函数。在定义后添加 save()
调用将解决您的问题。
您的代码:
def f():
def save():
a = t.get()
f = open((a + '.txt'), 'w')
f.write(a)
f.close()
return
固定:
def f():
def save():
a = t.get()
f = open((a + '.txt'), 'w')
f.write(a)
f.close()
return
save()
您将变量与输入框混淆了:使用更好的变量名会有所帮助。您还在使用此名称创建的文件中写入 file_name
... 目前尚不清楚它是否真的是您想要的。
您也在为变量分配 e
- pack()
returns None
在同一行打包
出于某种原因,您还启动了两个主循环;不要这样做,这是个坏主意。
import tkinter as tk
def save():
file_name = entry.get()
with open(file_name + '.txt', 'w') as file_object:
file_object.write(file_name) # it is unclear if writing the file_name in the newly created file is really what you want.
if __name__ == '__main__':
top = tk.Tk()
entry_field_variable = tk.StringVar()
entry = tk.Entry(top, textvariable=entry_field_variable)
entry.pack()
tk.Button(top, text="save", command=save).pack()
top.mainloop()
我删除了嵌套函数;如果您觉得有必要这样做,也许您应该改用 class。
我还将文件的 opening/closing 更改为为您处理它的上下文管理器。
import tkinter as tk
def f():
def save():
a = t.get()
with open((a + '.txt'), 'w') as f:
f.write(a)
top = tk.Tk()
t = tk.StringVar(top)
tk.Entry(top, textvariable=t).pack()
tk.Button(top, text = 'Save as a file', command=save).pack()
root = tk.Tk()
tk.Button(root, text="Button", command=f).pack()
root.mainloop()
最重要的变化是 t = tk.StringVar()
-> t = tk.StringVar(top)
,指定了主控件。还有一些其他更改(例如 pack()
returns None
所以不要基于它设置值,使用上下文管理器关闭文件)
我想将输入框的输入保存到 .txt
文件中,它适用于第一个代码而不是第二个代码,但我需要使用的是第二个代码。
代码 1:
import tkinter as tk
def f():
def save():
a = t.get()
f = open((a + '.txt'), 'w')
f.write(a)
f.close()
return
top = tk.Tk()
t = tk.StringVar()
e = tk.Entry(top, textvariable = t).pack()
b = tk.Button(top, text = 'Save as a file', command = save).pack()
top.mainloop()
f()
代码 2:
import tkinter as tk
root = tk.Tk()
def f():
def save():
a = t.get()
f = open((a + '.txt'), 'w')
f.write(a)
f.close()
return
top = tk.Tk()
t = tk.StringVar()
e = tk.Entry(top, textvariable = t).pack()
b = tk.Button(top, text = 'Save as a file', command = save).pack()
top.mainloop()
button = tk.Button(root, text="Button",command=f).pack()
root.mainloop()
您没有在第二个代码中调用 save() 函数。在定义后添加 save()
调用将解决您的问题。
您的代码:
def f():
def save():
a = t.get()
f = open((a + '.txt'), 'w')
f.write(a)
f.close()
return
固定:
def f():
def save():
a = t.get()
f = open((a + '.txt'), 'w')
f.write(a)
f.close()
return
save()
您将变量与输入框混淆了:使用更好的变量名会有所帮助。您还在使用此名称创建的文件中写入 file_name
... 目前尚不清楚它是否真的是您想要的。
您也在为变量分配 e
- pack()
returns None
在同一行打包
出于某种原因,您还启动了两个主循环;不要这样做,这是个坏主意。
import tkinter as tk
def save():
file_name = entry.get()
with open(file_name + '.txt', 'w') as file_object:
file_object.write(file_name) # it is unclear if writing the file_name in the newly created file is really what you want.
if __name__ == '__main__':
top = tk.Tk()
entry_field_variable = tk.StringVar()
entry = tk.Entry(top, textvariable=entry_field_variable)
entry.pack()
tk.Button(top, text="save", command=save).pack()
top.mainloop()
我删除了嵌套函数;如果您觉得有必要这样做,也许您应该改用 class。
我还将文件的 opening/closing 更改为为您处理它的上下文管理器。
import tkinter as tk
def f():
def save():
a = t.get()
with open((a + '.txt'), 'w') as f:
f.write(a)
top = tk.Tk()
t = tk.StringVar(top)
tk.Entry(top, textvariable=t).pack()
tk.Button(top, text = 'Save as a file', command=save).pack()
root = tk.Tk()
tk.Button(root, text="Button", command=f).pack()
root.mainloop()
最重要的变化是 t = tk.StringVar()
-> t = tk.StringVar(top)
,指定了主控件。还有一些其他更改(例如 pack()
returns None
所以不要基于它设置值,使用上下文管理器关闭文件)