Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Administrator
/
level3-lesson20-diy1
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
1fb6125f
authored
3 years ago
by
BellCodeEditor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
auto save
parent
2b388249
c0l1643p256a15561/T124557
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
303 additions
and
44 deletions
1.py
my_client.py
user.txt
测.py
1.py
View file @
1fb6125f
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
()
This diff is collapsed.
Click to expand it.
my_client.py
View file @
1fb6125f
...
...
@@ -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
.
sele
t
=
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
.
sele
ct
=
tkinter
.
Radiobutton
(
self
.
canvas
,
image
=
self
.
box
,
value
=
self
.
var
,
variable
=
self
.
v
,
width
=
25
,
height
=
15
,
borderwidth
=
0
,
command
=
self
.
remove
)
self
.
sele
c
t
.
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
.
sele
t
=
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
.
sele
ct
=
tkinter
.
Radiobutton
(
self
.
canvas
,
image
=
self
.
box
,
value
=
self
.
var
,
variable
=
self
.
v
,
width
=
25
,
height
=
15
,
borderwidth
=
0
,
command
=
self
.
remove
)
self
.
sele
c
t
.
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
()
...
...
This diff is collapsed.
Click to expand it.
user.txt
View file @
1fb6125f
{"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
This diff is collapsed.
Click to expand it.
测.py
0 → 100644
View file @
1fb6125f
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()
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment