目录
前言
想起小学的时候老师想点名找小伙伴回答问题的时候,老师竟斥巨资买了个点名器。今日无聊便敲了敲小时候老师斥巨资买的点名器。
本人姓白,就取名小白点名器啦,嘿嘿
代码包含:添加姓名、查看花名册、使用指南、随机抽取名字的功能(完整源码在最后)
主界面
定义主界面。使用“w+”模式创建test.txt文件(我添加了个背景图片,若不需要可省略)
#打开时预加载储存在test.txt文件中的花名册 namelist = [] with open(\"test.txt\", \"r\") as f: for line in f.readlines(): line = line.strip(\'\\n\') namelist.append(line) win = Tk() win.title(\'小白点名器\') win.geometry(\'500x300\') #定义画布,添加背景图片 canvas = Canvas(win,width=500,height=300) img_obj = PhotoImage(file=r\"C:\\Users\\ge\\Downloads\\IMG_202206307919_png.png\") #需输入照片路径 image = canvas.create_image(250,0,anchor = \"n\" , image = img_obj) canvas.pack() a = StringVar() b = StringVar() b.set(\'开始\') #定义可变文本信息 Label1 = Label(win, textvariable=a, font=(\'黑体\', 100)).place(y= 60 , x=65) #定义四个按钮 Button1 = Button(win, textvariable=b, font=(\'等线\', 30), command = zhuanzhuan).place(y=210,x = 190) Button2 = Button(win, text = \'添加姓名\', font=(\'等线\', 20), command = addname).place(x= 50,y =0) Button3 = Button(win, text = \'查看\', font=(\'等线\', 20), command = chakan).place(x= 230,y =0) Button4 = Button(win, text = \'指南\', font=(\'等线\', 20), command = zhinan).place(x= 360,y =0) win.mainloop()
添加姓名
定义添加姓名界面,每添加一次姓名就保存到test.txt文件中,判断输入是否为空(添加提示框)、判断花名册是否为空。
#定义添加姓名界面 def addname(): global Entry1 window = Tk() window.title(\'姓名添加器\') window.geometry(\'400x200+500+200\') Label11 = Label(window, text = \'请在下方输入你要添加的姓名\', font=(\'黑体\', 18), anchor=\'center\').place(y=30, x=25) Entry1 = Entry(window, font=(\'等线\', 30), width=70) Entry1.place(y=80, x=70, width=200, height=80) Button3 = Button(window, text = \'确认\', font=(\'等线\', 18), command = addname1).place(x= 300,y =80, height=80) #每添加一次姓名就保存到test.txt文件中 def addname1(): global namelist #声明为全局变量实时更新 if len(Entry1.get()) == 0: tkinter.messagebox.showinfo(\'提示\', \'姓名输入不能为空哦\') else: if len(Entry1.get()) == 2: zhongjian = list(Entry1.get())[::1] zhongjian1 = zhongjian[0] + \' \' +zhongjian[1] if len(namelist) == 0: nam = zhongjian1 else: nam = \'\\n\' + zhongjian1 else: if len(namelist) == 0: nam = str(Entry1.get()) else: nam = \'\\n\' + str(Entry1.get()) with open(\"test.txt\", \"a\") as f: f.write(nam) tip = \'姓名:\' + Entry1.get() + \' 添加成功\' tkinter.messagebox.showinfo(\'提示\', tip) print(nam) namelist = [] with open(\"test.txt\", \"r\") as f: for line in f.readlines(): line = line.strip(\'\\n\') namelist.append(line)
查看花名册
这个比较简单,使用Text来显示字典内的信息即可
def chakan(): window = Tk() window.title(\'花名册查看\') window.geometry(\'350x200+500+200\') console = Text(window, font=(\'等线\', 11)) console.place(y=20, x=35, width=280, height=170) console.insert(1.0,namelist)
使用指南
同上,使用Text显示
def zhinan(): window = Tk() window.title(\'小白点名器使用指南\') window.geometry(\'350x230+500+200\') console = Text(window, font=(\'等线\', 11)) console.place(y=20, x=35, width=280, height=190) console.insert(1.0, \' 欢迎使用小白点名器1.0\\n你可以在”添加姓名按钮上输入你要添加的名字\\n你可以在”查看“按钮中查看花名册中所有的名字\' \'\\n你可以在此程序同级的名为”花名册.txt“的文件夹中直接批量添加、删减姓名(使用回车做分隔)\\n--------------------------------\\n\' \'(指南之外)此程序在CSDN中已开源,欢迎访问我的博客:晋升阁\\n需要合作的可加我微信:baijinge1137\')
名字转动功能
判断“开始”、“停止”状态。定义线程。启用一个线程
#判断状态 def zhuanzhuan(): if b.get() == \'开始\': b.set(\'停止\') elif b.get() ==\"停止\": b.set(\'开始\') _thread.start_new_thread(xiancheng,()) #启用一个线程来转动姓名 #定义一个线程 def xiancheng(): global xuanzhong while b.get()==\'停止\': try: xuanzhong = random.choice(namelist) a.set(xuanzhong) Label1.updata()#刷新数据 time.sleep(0.3)#0.3秒刷新一次 except: continue time.sleep(0.3) a.set(xuanzhong)
完整代码
提示:我的项目是在主界面添加了背景图片的,若是不需要添加背景图片可删掉90-94行代码。若是需要添加背景图片的需注意路径地址是否正确
import random import time from tkinter import * import _thread import tkinter.messagebox def zhuanzhuan(): if b.get() == \'开始\': b.set(\'停止\') elif b.get() ==\"停止\": b.set(\'开始\') _thread.start_new_thread(xiancheng,()) #启用一个线程来转动姓名 def xiancheng(): global xuanzhong while b.get()==\'停止\': try: xuanzhong = random.choice(namelist) a.set(xuanzhong) Label1.updata() time.sleep(0.3) except: continue time.sleep(0.3) a.set(xuanzhong) def addname1(): global namelist #声明为全局变量实时更新 if len(Entry1.get()) == 0: tkinter.messagebox.showinfo(\'提示\', \'姓名输入不能为空哦\') else: if len(Entry1.get()) == 2: zhongjian = list(Entry1.get())[::1] zhongjian1 = zhongjian[0] + \' \' +zhongjian[1] if len(namelist) == 0: nam = zhongjian1 else: nam = \'\\n\' + zhongjian1 else: if len(namelist) == 0: nam = str(Entry1.get()) else: nam = \'\\n\' + str(Entry1.get()) with open(\"test.txt\", \"a\") as f: f.write(nam) tip = \'姓名:\' + Entry1.get() + \' 添加成功\' tkinter.messagebox.showinfo(\'提示\', tip) print(nam) namelist = [] with open(\"test.txt\", \"r\") as f: for line in f.readlines(): line = line.strip(\'\\n\') namelist.append(line) def chakan(): window = Tk() window.title(\'花名册查看\') window.geometry(\'350x200+500+200\') console = Text(window, font=(\'等线\', 11)) console.place(y=20, x=35, width=280, height=170) console.insert(1.0,namelist) def zhinan(): window = Tk() window.title(\'小白点名器使用指南\') window.geometry(\'350x230+500+200\') console = Text(window, font=(\'等线\', 11)) console.place(y=20, x=35, width=280, height=190) console.insert(1.0, \' 欢迎使用小白点名器1.0\\n你可以在”添加姓名按钮上输入你要添加的名字\\n你可以在”查看“按钮中查看花名册中所有的名字\' \'\\n你可以在此程序同级的名为”花名册.txt“的文件夹中直接批量添加、删减姓名(使用回车做分隔)\\n--------------------------------\\n\' \'(指南之外)此程序在CSDN中已开源,欢迎访问我的博客:晋升阁\\n需要合作的可加我微信:baijinge1137\') def addname(): global Entry1 window = Tk() window.title(\'姓名添加器\') window.geometry(\'400x200+500+200\') Label11 = Label(window, text = \'请在下方输入你要添加的姓名\', font=(\'黑体\', 18), anchor=\'center\').place(y=30, x=25) Entry1 = Entry(window, font=(\'等线\', 30), width=70) Entry1.place(y=80, x=70, width=200, height=80) Button3 = Button(window, text = \'确认\', font=(\'等线\', 18), command = addname1).place(x= 300,y =80, height=80) namelist = [] with open(\"test.txt\", \"r\") as f: for line in f.readlines(): line = line.strip(\'\\n\') namelist.append(line) win = Tk() win.title(\'小白点名器\') win.geometry(\'500x300\') canvas = Canvas(win,width=500,height=300) img_obj = PhotoImage(file=r\"C:\\Users\\ge\\Downloads\\IMG_202206307919_png.png\") #背景图片路径,若不需要添加将85—88行删掉即可 image = canvas.create_image(250,0,anchor = \"n\" , image = img_obj) canvas.pack() a = StringVar() b = StringVar() b.set(\'开始\') Label1 = Label(win, textvariable=a, font=(\'黑体\', 100)).place(y= 60 , x=65) Button1 = Button(win, textvariable=b, font=(\'等线\', 30), command = zhuanzhuan).place(y=210,x = 190) Button2 = Button(win, text = \'添加姓名\', font=(\'等线\', 20), command = addname).place(x= 50,y =0) Button3 = Button(win, text = \'查看\', font=(\'等线\', 20), command = chakan).place(x= 230,y =0) Button4 = Button(win, text = \'指南\', font=(\'等线\', 20), command = zhinan).place(x= 360,y =0) win.mainloop()
以上就是基于Python编写一个点名器的示例代码的详细内容,更多关于Python点名器的资料请关注其它相关文章!
© 版权声明
THE END
暂无评论内容