Commit 1fb6125f by BellCodeEditor

auto save

parent 2b388249
Showing with 303 additions and 44 deletions
import tkinter
from tkinter import *
alist = ["星期六下午打篮球", "星期天下午和小美一起看电影",
"12月18日给蒂法过生日","12.24送妈妈圣诞礼物"]
class Note(): # 便签、笔记
from tkinter import *
alist = ["星期六下午打篮球", "星期天下午和小美一起看电影",
"12月18日给蒂法过生日", "12.24送妈妈圣诞礼物"]
class Note(): # 便签、笔记
def __init__(self):
self.root = tkinter.Tk()
self.root.geometry('300x340+1000+200')
self.root.title("我的便签-待办事项")
self.root.resizable(width=False, height=False)
self.bg_img = tkinter.PhotoImage(file='bg.png') #导入背景图
def show(self): # 布置窗口界面
#画布
self.canvas = tkinter.Canvas(self.root ,width=300,height=340,bg='lightblue')
self.canvas.create_image(0,0,image=self.bg_img ,anchor=NW)
self.canvas.place(x=0,y=0)
self.bg_img = tkinter.PhotoImage(file="bg.png")
self.box=PhotoImage(file="box.png")
def show(self): # 布置窗口界面
# 画布
self.canvas = tkinter.Canvas(self.root, width=300, height=340)
self.canvas.create_image(0, 0, image=self.bg_img, anchor=NW)
self.canvas.place(x=0, y=0)
# 输入框
self.ent = tkinter.Entry(self.root, show=None,
font=('宋体', 13), bg="snow", width=25)
self.ent = tkinter.Entry(self.root, show=None,font=('宋体', 13),
bg="snow", width=25)
self.ent.place(x=10, y=310)
# 按钮
self.but = tkinter.Button(self.root,text='添加',font=('宋体',12),
bg="lightblue", width=5, command=self.get_info)
self.but = tkinter.Button(self.root,text='添加',font=('宋体', 12),
bg="lightblue", width=5, command=self.get_info)
self.but.place(x=240, y=305)
#展示文字内容
self.y=20
# 展示所有的文字
self.y = 20
self.var=0
self.v=IntVar()
for info in alist:
self.canvas.create_text(40,self.y,text=info,font=('楷体',11),anchor=W,fill='#0000FF')
self.y+=30
self.canvas.create_text(40, self.y, text=info,
font=("宋体", 11), anchor=W, fill='#FF9900')
self.select=tkinter.Radiobutton(self.canvas,image=self.box,value=self.var,variable=self.v,width=25,height=15,borderwidth=0,command=self.remove)
self.select.place(x=-20,y=self.y-10)
self.y += 30
def remove(self):
num=self.v.get()
alist.pop(num)
self.canvas.destroy()
app.show()
def get_info(self):
info = self.ent.get()
if info != '':
self.ent.delete('0',END) #清除从0索引到最后的内容
self.ent.delete("0", END)
if info != "":
alist.append(info)
self.canvas.create_text(40,self.y,text=info,font=('楷体',11),anchor=W,fill='#0000FF')
self.y+=30
self.canvas.create_text(40,self.y,text=info,font=("宋体",11),
anchor=W, fill='#FF9900')
self.select=tkinter.Radiobutton(self.canvas,image=self.box,value=self.var,variable=self.v,width=25,height=15,borderwidth=0,command=self.remove)
self.select.place(x=-20,y=self.y-10)
self.y += 30
app = Note()
app = Note()
app.show()
app.root.mainloop()
\ No newline at end of file
app.root.mainloop()
......@@ -11,14 +11,13 @@ class Note(): # 便签、笔记
self.root.title("我的便签-待办事项")
self.root.resizable(width=False, height=False)
self.bg_img = tkinter.PhotoImage(file="bg.png")
self.bg_box= tkinter.PhotoImage(file='box.png')
self.box=PhotoImage(file='box.png') #导入单选框图片文件
def show(self): # 布置窗口界面
# 画布
self.canvas = tkinter.Canvas(self.root, width=300, height=340)
self.canvas.create_image(0, 0, image=self.bg_img, anchor=NW)
self.canvas.place(x=0, y=0)
# 输入框-
# 输入框
self.ent = tkinter.Entry(self.root, show=None,font=('宋体', 13),
bg="snow", width=25)
self.ent.place(x=10, y=310)
......@@ -28,40 +27,41 @@ class Note(): # 便签、笔记
self.but.place(x=240, y=305)
# 展示所有的文字
self.y = 20
self.var=0 #单选框参数
self.v=IntVar() #设置关联变量
self.var=0 #单选框的value参数
self.v = IntVar() #设置关联变量
for info in alist:
self.canvas.create_text(40, self.y, text=info,
font=("宋体", 11), anchor=W, fill='#FF9900')
self.selet=tkinter.Radiobutton(self.canvas , image=self.bg_box,value=self.var,variable=self.v,width=25,height=15,borderwidth=0,command=self.remove)
self.selet.place(x=-20,y=self.y-10)
font=("宋体", 11), anchor=W, fill='#FF9900')
self.select = tkinter.Radiobutton(self.canvas,image=self.box,value=self.var,variable=self.v,width=25,height=15,borderwidth=0,command=self.remove)
self.select.place(x=-20,y=self.y-10)
self.y += 30
def remove(self):
num = self.v.get()
alist.pop(num)
content=json.dumps(users)
#更新
content = json.dumps(users)
with open('user.txt','w',encoding='utf-8')as file:
file.write(content)
self.canvas.destroy()
app.show()
def get_info(self):
info = self.ent.get()
self.ent.delete("0", END)
if info != "":
alist.append(info)
content=json.dumps(users)
content = json.dumps(users)
with open('user.txt','w',encoding='utf-8')as file:
file.write(content)
self.canvas.create_text(40,self.y,text=info,font=("宋体",11),
anchor=W, fill='#FF9900')
self.selet=tkinter.Radiobutton(self.canvas , image=self.bg_box,value=self.var,variable=self.v,width=25,height=15,borderwidth=0,command=self.remove)
self.selet.place(x=-20,y=self.y-10)
self.select = tkinter.Radiobutton(self.canvas,image=self.box,value=self.var,variable=self.v,width=25,height=15,borderwidth=0,command=self.remove)
self.select.place(x=-20,y=self.y-10)
self.y += 30
with open("user.txt", "r", encoding="utf-8") as f:
info = f.read()
users = json.loads(info)
......@@ -100,11 +100,11 @@ def register(): # 注册验证
reg_to_login()
def login(): # 登录验证
global app ,alist
global app,alist #转换为全局变量
name, password = app_login.get_input()
user_name = users.get(name)
if user_name != None and user_name['password']==password:
alist = users[name]['event']
alist=users[name]['event']
app_login.root.destroy()
app=Note()
app.show()
......
{"m": {"password": "m", "event": []}}
\ No newline at end of file
{"123": {"password": "123", "event": ["\u63d0\u793a1\uff1a\u53ef\u4ee5\u540c\u8f93\u5165\u6846\u6dfb\u52a0\u65b0\u4efb\u52a1", "\u63d0\u793a2:\u70b9\u51fb\u524d\u9762\u9009\u62e9\u6846\uff0c\u8868\u793a\u4efb\u52a1\u5b8c\u6210", "1231"]}, "qqq": {"password": "qqq", "event": []}}
\ No newline at end of file
import tkinter
from tkinter import *
from tkinter import messagebox
import json
#alist = ["星期六下午打篮球","星期天下午和小美一起看电影",
# "12月18号给蒂法过生日","12.24送妈妈圣诞礼物"]
class Note(): #便签,笔记
def __init__(self):
self.root = tkinter.Tk()
self.root.geometry('300x340+1000+200')
self.root.title("我的便签-待办事项")
self.root.resizable(width=False,height=False) ## True可以拉伸,False不能拉伸
self.bg_img = tkinter.PhotoImage(file='bg.png')
self.box = PhotoImage(file='box.png')
def show(self): #布置窗口界面
#画布
self.canvas=tkinter.Canvas(self.root, width=300,
height=340, bg='lightblue')
self.canvas.create_image(0,0,image=self.bg_img,anchor=NW)
self.canvas.place(x=0,y=0)
#输入框
self.ent = tkinter.Entry(self.root,show=None,font=('宋体',13),
bg="snow",width=25)
self.ent.place(x=10, y=310)
#按钮
self.but = tkinter.Button(self.root,text='添加',font=('添加',12),
bg="lightblue", width=5,command=self.get_info)
self.but.place(x=240,y=305)
#展示所有的文字
self.y = 20
self.val = 0
self.v = IntVar() #设置关联变量
for info in alist:
self.canvas.create_text(40,self.y,text=info,font=('宋体',11),
anchor=W,fill='#FF9900')
self.select = tkinter.Radiobutton(self.canvas,image=self.box,
value=self.val,variable=self.v,width=25,height=15,borderwidth=0,command=self.remove)
self.select.place(x=-20,y=self.y-10)
self.val += 1
self.y += 30
def remove(self):
num = self.v.get()
alist.pop(num)
#将用户删除后的新内容从新转换成字符串类型,写入文件中去
#更新用户便签内容
content = json.dumps(users)
with open(r"user.txt","w",encoding='utf-8') as file:
file.write(content)
self.canvas.destroy()
app.show()
def get_info(self):
info = self.ent.get()
if info != '':
self.ent.delete('0',END)
alist.append(info)
#将用户删除后的新内容从新转换成字符串类型,写入文件中去
#更新用户便签内容
content = json.dumps(users)
with open(r"user.txt","w",encoding='utf-8') as file:
file.write(content)
self.canvas.create_text(40,self.y, text=info,
font=('宋体',11), anchor='w', fill='#FF9900')
self.select = tkinter.Radiobutton(self.canvas,image=self.box,
value=self.val,variable=self.v,width=25,height=15,borderwidth=0,command=self.remove)
self.select.place(x=-20,y=self.y-10)
self.y += 30
#第二课文件
with open(r"user.txt",'r',encoding="utf-8") as f:
info = f.read()
users = json.loads(info)
def login_to_reg(): # 登录界面转注册界面
app_login.root.destroy() #销毁登录界面窗口
global app_reg #将局部变量变为全局变量
app_reg = My_register() #创建对象--注册界面
app_reg.show() #加载注册窗口控件
def reg_to_login(): # 注册界面转登录界面
app_reg.root.destroy() #销毁注册界面窗口
global app_login #将局部变量变为全局变量
app_login = My_login() #创建对象--登录界面
app_login.show() #加载登录界面窗口控件
def register(): # 注册验证
name,password1,password2 = app_reg.get_input()
#第一种:信息不完整
if name == "" or password1 == "" or password2 == "":
messagebox.showwarning("警告","请填写完整的注册资料!")
#第二种:用户名重复存在
elif name in users:
messagebox.showwarning("警告","用户名已存在,请重新输入")
#第三种:注册输入的两次密码不一致
elif password1 != password2:
messagebox.showwarning("警告","你再这样我就要报警了(两次密码不一致!)")
else:
#正确的使用方式。 一一对应--字典 键值对(键和值)
#users[name] = password1
user_info = {}
user_info["password"] = password1
user_info["event"] = ["提示1:可以同输入框添加新任务",
"提示2:点击前面选择框,表示任务完成"]
users[name] = user_info
content = json.dumps(users)
#with open as file(自动关闭) 三步走:打开文件,写入数据,关闭文件
with open(r"user.txt","w",encoding="utf-8") as file:
file.write(content)
#注册成功,跳转到登录界面
messagebox.showinfo("成功","注册成功!")
reg_to_login()
def login(): # 登录验证
global app,alist
name,password = app_login.get_input()
#pwd = users.get(name) #pwd = users.get(input(name))
user_name = users.get(name)
if user_name != None and user_name["password"] == password:
#取出字典内自己的事件列表
alist = users[name]['event']
#if pwd == password:
#messagebox.showinfo("成功","登录成功")
app_login.root.destroy()
app = Note()
app.show()
app.root.mainloop()
else:
messagebox.showwarning("错误","用户名或密码错误!请重新输入")
class My_login(): # 登录窗口
def __init__(self):
self.root = tkinter.Tk()
self.root.title("登录窗口")
self.root.geometry('400x300+500+300')
self.root.resizable(width=False, height=False) # True可以拉伸,False不能拉伸
def show(self): # 登录界面的所有控件
# Label文本标签,界面提示信息
l = tkinter.Label(self.root, text='您好!请登录', bg='green',
font=('宋体', 15), width=40, height=2)
l.place(x=0, y=0)
l = tkinter.Label(self.root, text='用户名:', font=("宋体", 12),
fg="black")
l.place(x=50, y=80)
l = tkinter.Label(self.root, text='密 码:', font=("宋体", 12),
fg="black")
l.place(x=50, y=140)
# Entry单行文本输入框:用户名、密码
self.e1 = tkinter.Entry(self.root, show=None, font=('宋体', 14),
bg="light grey", width=18) # 显示成明文形式
self.e2 = tkinter.Entry(self.root, show='*', font=('宋体', 14),
width=18) # 显示成密文形式
self.e1.place(x=120, y=80)
self.e2.place(x=120, y=140)
# 登录、注册按钮
button1 = tkinter.Button(self.root, text='登录', bg="lightblue",
fg="black", width=15, command=login)
button1.place(x=60, y=220)
button2 = tkinter.Button(self.root, text='注册', bg="lightgreen",
fg="black", width=15, command=login_to_reg)
button2.place(x=230, y=220)
# 进入消息循环,监听事件
self.root.mainloop()
def get_input(self): # 获取输入的用户名、密码
self.name = self.e1.get()
self.password = self.e2.get()
return self.name, self.password
class My_register(): # 注册窗口
def __init__(self):
self.root = tkinter.Tk()
self.root.title("注册窗口")
self.root.geometry('400x320+500+300')
self.root.resizable(width=False, height=False) # True可以拉伸,False不能拉伸
def show(self): # 注册界面的所有控件
# 用户名、密码、确认密码输入框
self.e1 = tkinter.Entry(self.root, show=None, font=('宋体', 14),
bg="light grey", width=18) # 显示成明文形式
self.e1.place(x=140, y=80)
self.e2 = tkinter.Entry(self.root, show='*', font=('宋体', 14),
width=18)
self.e2.place(x=140, y=140)
self.e3 = tkinter.Entry(self.root, show='*', font=('宋体', 14),
width=18)
self.e3.place(x=140, y=200)
# Label文本标签,窗口界面文字:用户名、密码、确认密码
lab = tkinter.Label(self.root, text='您好!请填写注册信息',
font=('宋体', 15),fg="black", width=40, height=2, bg="green")
lab.place(x=0, y=0)
lab1 = tkinter.Label(self.root, text='用户名:', font=("宋体", 12),
fg="black")
lab1.place(x=60, y=80)
lab2 = tkinter.Label(self.root, text='密 码:', font=("宋体", 12),
fg="black")
lab2.place(x=60, y=140)
lab3 = tkinter.Label(self.root, text='确认密码:', font=("宋体", 12),
fg="black")
lab3.place(x=50, y=200)
# 注册界面的提交、取消按钮
button1 = tkinter.Button(self.root, text='提交', bg="light blue",
width=15,command=register)
button1.place(x=230, y=250)
button2 = tkinter.Button(self.root, text='取消', bg="light green",
width=15, command=reg_to_login)
button2.place(x=80, y=250)
# 进入消息循环
self.root.mainloop()
def get_input(self): # 获取提交的注册信息
self.name = self.e1.get()
self.password1 = self.e2.get()
self.password2 = self.e3.get()
return self.name, self.password1, self.password2
app_login = My_login()
app_login.show()
# app = Note()
# app.show()
# app.root.mainloop()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment