我的代码有问题——用户输入是在我运行程序时保存的,而不是在点击按钮时。我还试图制作一个函数来检测entry1.get((==none是否不保存输入"输入";但这没有起作用,感谢你的帮助和时间
我的代码:
#imports
#define the first tk window
window = Tk()
window.geometry("655x600")
window.title("")
icon = PhotoImage(file="data/icons/icon.png")
window.iconphoto(True,icon)
window.config(background="#2e3033")
#savefiles
savefile1 = open("data/userinput/data1.txt","w", encoding="utf-8")
#button functions
def new_window1():
global entry1
window2 = Tk()
window2.geometry("500x100+200+300")
window2.config(background="#2e3033")
window2.title("Edit Button 1")
entry1 = Entry(window2,width=100, font= ("Arial",12))
entry1.place(x=5,y=30)
Button1 = Button(window2, text="save",command=lambda:[savefile1.write(entry1.get()),window2.destroy()])
Button1.place(x=5,y=70)
#buttons
image1 = PhotoImage(file="images/streamdeximage1.png")
button1 = Button(window, text="hello" , command=new_window1 , image=image1)
button1.place(x=20,y=20)
window.mainloop()
即使我们的代码在我这边第二个窗口的按钮点击时保存了数据,也有一些变化
- 应该只有一个根窗口,那就是TK((,如果你有多个窗口,那么使用Toplevel((
- 使用上下文管理器在打开文件但从未关闭文件时保存文件中的数据
- 删除全局入口声明,这没有任何意义
- 如果需要通过刷新缓冲区立即写入数据,请使用file.flush((
def save_data(data):
with open("data.txt", "w", encoding="utf-8") as file:
file.write(data)
file.flush()
# button functions
def new_window1():
window2 = Toplevel()
window2.geometry("500x100+200+300")
window2.config(background="#2e3033")
window2.title("Edit Button 1")
entry1 = Entry(window2, width=100, font=("Arial", 12))
entry1.place(x=5, y=30)
button1 = Button(window2, text="save", command=lambda: [save_data(entry1.get()), window2.destroy()])
button1.place(x=5, y=70)