__author__ = 'Jeff.xie'
import base64
import os
import tkinter as tk
from tkinter import *
from tkinter import filedialog, dialog
#os.path.expanduser('~')获取当前用户的目录 C:\Users\jeff.xie
user_data_path=path = os.path.expanduser('~')+"\\data.txt"
username_local=''
password_local=''
email_local=''
file_path = ''
def open_file():
global file_path
file_path = filedialog.askopenfilename(title=u'选择文件', initialdir=(os.path.expanduser('D:/')))
if file_path is not None:
e_path.delete(0,"end") #清除文本
e_path.insert('insert', file_path)
window = tk.Tk()
window.title('Tools') # 标题
window.geometry('500x300+300+300') # 窗口尺寸
open_btn =Button(window, text='Browser', width=15, height=1, command=open_file)
# open_btn =Button(window, text='Browser', command=open_file)
open_btn.grid(row=0,column=0,sticky=W)
e_path =Entry(window,width=50)
e_path.grid(row=0,column=1,sticky=W)
#用户名标签及输入框
l_user =Label(window,text='User:')
l_user.grid(row=1,sticky=W) #W表示west,左对齐,
e_user =Entry(window)
e_user.grid(row=1,column=1,sticky=W) #E表示east,右对齐
#密码标签及输入框
l_pwd = Label(window,text='Password:')
l_pwd.grid(row=2,sticky=W)
e_pwd = Entry(window)
e_pwd['show']='*'
e_pwd.grid(row=2,column=1,sticky=W)
#email标签及输入框
l_email =Label(window,text='Email:')
l_email.grid(row=3,sticky=W)
e_email =Entry(window)
e_email.grid(row=3,column=1,sticky=W)
def mybase64_encode(data): #加密,参数为字符串类型
r=base64.b64encode(data.encode("utf8")) # data.encode("utf8")是把字符串转成bytes #参数必须是字节类型
jiami_data = r.decode('utf8') #转换成字符串
# print("jiami_data:",jiami_data)
return jiami_data
def mybase64_decode(data): #解密,参数为字符串类型
r=base64.b64decode(data.encode("utf8"))
jiemi_data = r.decode('utf8')#转换成字符串
# print("jiemi_data:",jiemi_data)
return jiemi_data
def test():
write_content_to_txt(get_user_content())
if len(file_path) >0:
with open(file_path,'rb',encoding='utf8') as f:
data = f.readlines()
else:
messagebox.showwarning("提示","请选择文件")
# e_path.insert('insert', "请选择文件")
def write_content_to_txt(content):
with open(path,"w") as f:
f.write(content)
# if not os.access(user_data_path, os.R_OK): #如果不存在创建文件
# with open(path,"w") as f:
# f.write(content)
def get_user_data_from_local():
global username_local
global password_local
global email_local
if os.access(user_data_path, os.R_OK): #判断文件是否存在,是否可读
with open(user_data_path,"r") as f:
data=f.readlines()
for i in data:
if "username" in i:
username_local= i.split(":")[1].strip()
if "password" in i:
p= i.split(":")[1].strip()
password_local = mybase64_decode(p)
if "email" in i:
email_local= i.split(":")[1].strip()
return username_local,password_local,email_local
def set_user_data():
user,pwd,email= get_user_data_from_local()
e_user.insert('insert', user)
e_pwd.insert('insert', pwd)
e_email.insert('insert', email)
def get_user_content():
username = e_user.get() #获取输入框文本
password = e_pwd.get()
email = e_email.get()
content = "username:"+username+"\n"
content += "password:"+mybase64_encode(password)+"\n"
content += "email:"+email+"\n"
return content
# run =Button(window, text='Run', width=15, height=2, command=test)
run =Button(window, text='Run',width=30, command=test)
run.grid(row=4,columnspan=2) #columnspan=2表示占用2列,rowspan=2表示占用2行,
# bt1 = tk.Button(window, text='打开文件', width=15, height=2, command=open_file)
# bt1.pack()
# text1 = tk.Text(window, width=50, height=10, bg='orange', font=('Arial', 12))
# text1.pack()
# bt2 = tk.Button(window,text='Run',width=15, height=2, command=test)
# bt2.pack()
set_user_data()
def JieShu():
r=messagebox.askyesno(title='询问', message='确定要关闭此应用程序?')
print(r)
if r:
sys.exit(0)
# window.destroy()#销毁root窗口
else:
print("不需要关闭")
#下面这一句最重要,是接收到关闭点击操作的语句,之后调用JieShu函数
window.protocol("WM_DELETE_WINDOW", JieShu)
window.mainloop() # 显示
python之Tkinter界面工具
于 2022-07-22 10:52:03 首次发布