如何解决如何在屏幕上添加电子邮件?
我有这段代码,问题是当我完成程序并重新启动时,它不会仅在email.txt
中将电子邮件保存在屏幕上。
我如何在屏幕上添加电子邮件和密码,即使重新启动文件后,电子邮件也仍然出现在屏幕上,不仅出现在email.txt
中?
from tkinter import *
from tkinter import messagebox
import tkinter.messagebox
roots = Tk()
roots.title("Email's save")
roots.geometry("500x500")
e = Entry(roots)
e.grid(row=0,column=1)
e.focus_set()
p = Entry(roots,show="*")
p.grid(row=1,column=1)
p.focus_set()
textEmail = StringVar()
textPassword = StringVar()
def callback():
textEmail.set(textEmail.get() + e.get() + "\n")
textPassword.set(textPassword.get() + p.get() + "\n")
def cleargrid():
textEmail.set("")
textPassword.set("")
def delete():
answer = tkinter.messagebox.askquestion('Delete','Are you sure you want to delete this entry?')
if answer == 'yes':
cleargrid()
def save():
email_info = e.get()
password_info = p.get()
file = open("emails.txt","a")
file.write(email_info)
file.write("\n")
file.write(password_info)
file.write("\n")
file.write("=" * 20)
file.close()
def EmailPassword():
email = Label(roots,text="Email: ",font=('Courier',14))
email.grid(row=0,sticky=W)
passoword = Label(roots,text="Password: ",14))
passoword.grid(row=1,sticky=W)
saved_email = Label(roots,text="Saved Email",14))
saved_email.grid(row=15,column=0)
saved_password = Label(roots,text="Password",14))
saved_password.grid(row=15,column=15)
write_email = Label(roots,textvariable=textEmail,14))
write_email.grid(row=20,column=0)
write_password = Label(roots,textvariable=textPassword,14))
write_password.grid(row=20,column=15)
btn_save = Button(roots,text="Save",command= lambda:[callback(),save()])
btn_save.grid(row=10,column=2,sticky=W)
btn_del = Button(roots,text="X",fg="red",command=delete)
btn_del.grid(row=60,column=20)
roots.mainloop()
EmailPassword()
解决方法
为了使电子邮件地址显示在开头,您必须从文件中获取该信息。只需添加另一个函数即可打开文件(如果存在),读取地址并设置变量textEmail
def set_email():
try:
file = open("emails.txt","r")
emails = file.readlines()
last_address = emails[-2][:-1] # line before last line without the line break
file.close()
textEmail.set(last_address)
except:
pass ## There was no file "emails.txt"
如果在定义变量textEmail
之后调用此函数,则将在加载窗口时获得地址。
- 删除您当前的“ emails.txt”。格式不正确,无法正常工作。
- 将
save
更改为此。请注意\n
之后的=*20
def save(): with open("emails.txt","a") as f: f.write(f'{e.get()}\n{p.get()}\n{"="*20}\n')
- 添加此功能
def get_emails(): try: with open("emails.txt","r") as f: for i,line in enumerate(filter(lambda t: t != f'{"="*20}\n',f.readlines())): if not i%2: textEmail.set(f'{textEmail.get()}{line}') else: textPassword.set(f'{textPassword.get()}{line}') except FileNotFoundError: pass
- 在
roots.mainloop()
之前添加此行get_emails()
放在一边:
您真的要在文本文件中存储未加密的电子邮件和密码信息吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。