资讯专栏INFORMATION COLUMN

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

89542767 / 367人阅读

  今天,小编给大家去做一个详细的介绍,介绍的内容是涉及到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()

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128425.html

相关文章

  • 一起用Python做个上课点名器,好玩又实用!

    摘要:今天就继续给大家分享一个读者粉丝投稿的,关于上课点名的实战案例,一起来看看是如何实现的吧首先我们还是一起先来看看点名器实现的效果下面,我们开始介绍这款点名器的制作过程。 ...

    phpmatt 评论0 收藏0
  • 当谈论迭代器时,我谈些什么?

    摘要:示例代码如下此示例中可以看出,当迭代器终止时,通过抛出异常告知迭代器已耗尽。但如果迭代器所指向的数据结构在其存在时发生了插入或删除操作,则迭代器将可能失效。与的情形类似,对进行任何插入操作也将损坏迭代器。 花下猫语:之前说过,我对于编程语言跟其它学科的融合非常感兴趣,但我还说漏了一点,就是我对于 Python 跟其它编程语言的对比学习,也很感兴趣。所以,我一直希望能聚集一些有其它语言基...

    王军 评论0 收藏0
  • Flask框架基础(二)

    摘要:处理和函数之间关系的程序称为路由。模板引擎是由实现的是内置的模板语言参照设计思想设计的,跟差不多渲染模板默认情况下,在程序文件夹中的子文件夹中寻找模板。如果需要可在文件夹中使用子文件夹存放文件。 1 程序的基本结构 1.1初始化 所有Flask 程序都必须创建一个程序实例。Web 服务器使用一种名为Web 服务器网关接口(Web Server Gateway Interface,WSG...

    lpjustdoit 评论0 收藏0
  • Python】一文弄懂python装饰器(附源码例子)

    摘要:装饰器的使用符合了面向对象编程的开放封闭原则。三简单的装饰器基于上面的函数执行时间的需求,我们就手写一个简单的装饰器进行实现。函数体就是要实现装饰器的内容。类装饰器的实现是调用了类里面的函数。类装饰器的写法比我们装饰器函数的写法更加简单。 目录 前言 一、什么是装饰器 二、为什么要用装饰器 ...

    liuchengxu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<