基于Python编写一个点名器的示例代码

AI 摘要 / TL;DR

今天,小编给大家去做一个详细的介绍,介绍的内容是涉及到Python的,主要还是利用这门语言去进行编程,我们可以利用这门语言,去编写一个示例器的代码,具体的代码,下文给大家贴了出来。 前言 想起小学的时候老师想点名找小伙伴回答问题的时候,老师竟斥巨资买了个点名器。今日无聊便敲了敲小时候老师斥巨资买的点名器。 本人姓白,就

来源: https://www.ucloud.cn/yun/128425.html 作者: 89542767 发布日期: 发布于2022-12-14 17:29

今天,小编给大家去做一个详细的介绍,介绍的内容是涉及到Python的,主要还是利用这门语言去进行编程,我们可以利用这门语言,去编写一个示例器的代码,具体的代码,下文给大家贴了出来。

前言

  想起小学的时候老师想点名找小伙伴回答问题的时候,老师竟斥巨资买了个点名器。今日无聊便敲了敲小时候老师斥巨资买的点名器。

  本人姓白,就取名小白点名器啦,嘿嘿

  代码包含:添加姓名、查看花名册、使用指南、随机抽取名字的功能(完整源码在最后)

主界面

  定义主界面。使用“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:UsersgeDownloadsIMG_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.0n你可以在”添加姓名按钮上输入你要添加的名字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.0n你可以在”添加姓名按钮上输入你要添加的名字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:UsersgeDownloadsIMG_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()

  综上所述,这篇内容就给大家介绍到这里了,希望可以给大家带来帮助。