
ps:文章末尾有素材
项目需求分析:
1.登录界面
2.敲击木鱼增加功德界面
3.功德记录
项目准备:
1.扩展:tkinter,pygame
2.素材:敲击音效,木鱼图片,功德记录文件
项目结构:
1.窗口及窗口控件
2.控件功能及对应函数
3.文件读取写入
import pygame as py
import tkinter as tk
gongde = 0 #!存放功德计数
with open('gongde.txt','r') as f: #!打开gongde.txt,读取功德数量
gongde = f.read()
f.close() #!关闭文件读取
gongde = int(gongde) #!转换数据类型,使其能够计算
def login(): #! 登录的按钮函数
#!判断账号密码是否正确
uid = uidi.get() #!通过uidi 获取用户输入数据
upd = upwi.get()
if uid == '123123' and upd == '123123':
#!隐藏所有登陆页面控件
uidi.grid_forget()
uidl.grid_forget()
updl.grid_forget()
upwi.grid_forget()
btnlogin.grid_forget()
#!重新设置窗口大小
win.geometry('330x330')
# 显示木鱼图片和功德
click.grid(row=1,column=0,padx=35)
gd.grid(row=0,column=0,padx=35)
def gd_click(): #!敲击木鱼函数
global gongde #!声明全局变量
with open('gongde.txt','w') as fs: #!打开gongde.txt,写入
gongde += 99 #!每次敲击增加99
fs.write(str(gongde)) #!重新写入文件
py.mixer.music.play() #!播放敲击音效
gd['text'] = f'{gongde}' #!更改标签显示功德数量
return gongde #!返回功德
#!初始化音乐
py.mixer.init()
#!创建窗口
win = tk.Tk()
#!生成账号密码标签
uidl = tk.Label(win,text='账号')
updl = tk.Label(win,text='密码')
#!生成账号密码输入框
uidi = tk.Entry(win)
upwi = tk.Entry(win,show='* ')
#!生成确认按钮
btnlogin = tk.Button(win,text="确定",command=login)
#!生成图片
pho = tk.PhotoImage(file='木鱼.png')
click = tk.Button(image=pho,command=gd_click)
#!功德增加
gd = tk.Label(text=f'{gongde}') #!格式化输出的方式显示功德数量
#!音乐
music = py.mixer.music.load(filename='敲击音效.mp3')
#!添加进win窗口
uidl.grid(row=0,column=0,padx=(10,0),pady=10) # 0行0列
uidi.grid(row=0,column=1,columnspan=2,padx=(0,10)) # 0行1列,跨2列
updl.grid(row=1,column=0,padx=(10,0))
upwi.grid(row=1,column=1,columnspan=2,padx=(0,10)) # 1行1列,跨2列
btnlogin.grid(row=2,column=1,pady=10,ipadx=10) # 按钮
win.mainloop() #!窗口显示循环