世界今日讯!基于Python编写一个点名器的示例代码
来源:脚本之家    时间:2022-07-02 06:04:45


(资料图片仅供参考)

目录
前言主界面添加姓名查看花名册使用指南名字转动功能完整代码

前言

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

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

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

主界面

定义主界面。使用“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点名器的资料请关注脚本之家其它相关文章!

关键词: 背景图片 我的博客 是否为空 全局变量

上一篇:

下一篇:

X 关闭

X 关闭