基于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:\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点名器的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python写一个简单上课点名系统(附源码)

    目录 一.准备工作 1.Tkinter 2.PIL 二.预览 1.启动 2.开始点名-顺序点名 3.开始点名-随机点名 4.手动加载人名单 5.开始点名-顺序点名-Pyqt5版本 三.思路 1.整体实现思路 2.点名实现思路 四.源代码 五.总结 一.准备工作 1.Tkinter Tkinter 是 python 内置的 TK GUI 工具集.TK 是 Tcl 语言的原生 GUI 库.作为 python 的图形设计工具,它所使用的 Tcl 语言环境已经完全嵌入到了 python 解释器中. 我们

  • python用tkinter实现一个简易能进行随机点名的界面

    今天学到Python 有一个名为 random 的内置模块,可用于生成随机数, 这个好玩~可以用来做为上课随机点名的程序了哈哈.. def main_cor(): import random i = random.randrange(0,29) with open('roll_call.txt', encoding='utf-8') as file_obj: contents = file_obj.read() stuff = contents.split(' ') s = stuff[i] s

  • python实战练习做一个随机点名的程序

    用python做一个简单的随机点名程序(不重复点名) 这是我来到csdn的第一篇文章,内容如果有瑕疵的地方或者代码可以进一步改善,请大家对我指点一二.谢谢!废话不多说,上代码! import random #导入随机模块 import pyttsx3 #导入第三方语音模块 listen = pyttsx3.init() #初始化一个变量 txt_path = input('请输入txt文件的path:') #使用者输入名单文件的路径(名单文件为txt,一行只能有一个姓名,姓名必须在行首不能有空格

  • 一起用Python做个上课点名器的制作过程

    目录 前言 一.核心功能设计 二.实现步骤 1. UI排版布局设计 2. 学生姓名加载 3. 随机点名实现 4. 连抽模式实现 5. 抽取历史查看 4. 打包配置 前言 前段时间,用PyQt5写了几篇文章,关于Python自制一款炫酷音乐播放器.自定义动态壁纸.车牌自动识别系统.今天就继续给大家分享一个读者粉丝投稿的,关于上课点名的实战案例,一起来看看是如何实现的吧! 首先我们还是一起先来看看点名器实现的效果: 下面,我们开始介绍这款点名器的制作过程. 获取源码及exe打包程序,点击下载 一.核

  • Python实现上课点名器系统

    目录 前言 一.核心功能设计 二.实现步骤 1. UI排版布局设计 2. 学生姓名加载 3. 随机点名实现 4. 连抽模式实现 5. 抽取历史查看 三. 打包配置 总结 前言 前段时间,用PyQt5写了几篇文章,关于Python自制一款炫酷音乐播放器.自定义动态壁纸.车牌自动识别系统.今天就继续给大家分享一个读者粉丝投稿的,关于上课点名的实战案例,一起来看看是如何实现的吧! 首先我们还是一起先来看看点名器实现的效果: 下面,我们开始介绍这款点名器的制作过程. 直接跳到文末获取源码及exe打包程序

  • python写一个随机点名软件的实例

    最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix Wang from tkinter import * import tkinter.font as tkFont import random import gc import os, sys import chardet import copy from threading import Thre

  • 基于python tkinter的点名小程序功能的实例代码

    代码如下所示: import datetime import json import os import random import tkinter as tk import openpyxl # 花名册文件名 excel_file_path = "花名册.xlsx"#需在当前目录创建对应花名册.xlsx # 工作表名 excel_sheet = "Sheet1" # 记录存储文件名 file_path = "name_record.json"

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

    目录 前言 主界面 添加姓名 查看花名册 使用指南 名字转动功能 完整代码 前言 想起小学的时候老师想点名找小伙伴回答问题的时候,老师竟斥巨资买了个点名器.今日无聊便敲了敲小时候老师斥巨资买的点名器. 本人姓白,就取名小白点名器啦,嘿嘿 代码包含:添加姓名.查看花名册.使用指南.随机抽取名字的功能(完整源码在最后) 主界面 定义主界面.使用“w+”模式创建test.txt文件(我添加了个背景图片,若不需要可省略) #打开时预加载储存在test.txt文件中的花名册 namelist = [] w

  • 基于Python编写微信清理工具的示例代码

    目录 主要功能 运行环境 核心代码 完整代码 前几天网上找了一款 PC 端微信自动清理工具,用了一下,电脑释放了 30GB 的存储空间,而且不会删除文字的聊天记录,很好用,感觉很多人都用得到,就在此分享一下,而且是用 Python 写的,喜欢 Python 的小伙伴可以探究一下. 主要功能 它可以自动删除 PC 端微信自动下载的大量文件.视频.图片等数据内容,释放几十 G 的空间占用,而且不会删除文字的聊天记录,可以放心使用. 工作以后,微信的群聊实在太多了,动不动就被拉入一个群中,然后群聊里大

  • 基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算

    方法一: 结合lambda表达式.函数调用运算符.标准库函数对象.C++11标准新增的标准库function类型,编写一个简单的计算器,可实现简单的加.减.乘.除.取余二元运算.代码如下: #include "pch.h" #include <iostream> #include <functional> #include <map> #include <string> using namespace std; int add(int i

  • 基于Python编写一个宝石消消乐小游戏

    目录 开发工具 环境搭建 原理简介 开发工具 python版本:3.6.4 相关模块: pygame:以及一些python自带的模块. 环境搭建 安装python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 游戏规则: 玩家通过鼠标交换相邻的拼图,若交换后水平/竖直方向存在连续三个相同的拼图,则这些拼图消失,玩家得分,同时生成新的拼图以补充消失的部分,否则,交换失败,玩家不得分.玩家需要在规定时间内获取尽可能高的得分. 实现过程: 首先加载一些必要的游戏素材: 加载背景音乐: py

  • 基于Python编写一个自动关机程序

    目录 1.实现效果 2.实现步骤 3.全部代码 1.实现效果 2.实现步骤 模块导入 import os,sys,time from PyQt5 import QtCore,QtWidgets,QtGui 窗口设置 def pageShow(self,page): #设置窗口的位置和大小 page.setGeometry(400,400,400,200) #设置窗口的标题 page.setWindowTitle('Window shutdown') #设置窗口的图标 #page.setWindo

  • 基于Python编写一个根据姓名测性别的小程序

    目录 导语 一.准备环节 1.1安装环境 二.准备素材 三.开始敲代码 3.1导入模块 3.2定义界面 3.3预测性别 3.4读取数据 3.5附完整的源码 四.效果展示 总结 导语 以前上英语课老师都会教哪些名字一听就知道是男生的,比如David.Tom.Jerry,然后Angela.Sophia一听就是女生的名字.当你以为所有名字一听就可以辨别男女的时候,你就想错了~就像中文里面“贾凡”,你以为是男生,其实是女生也说不定.这种难分性别的名字 其实很多呢~为了避免宝宝的性别和提前取好的名字冲突,

  • 基于Python编写一个B站全自动抽奖的小程序

    目录 导语 开发工具 环境搭建 原理简介 导语 应好友邀请,帮他写了个小程序,功能类似于实时监控自己关注的UP主,如果关注的UP主中有人发布了抽奖的动态,就自动参与这个抽奖.这样就能不错过任何一个可以暴富的机会了.写完之后感觉这个想法还是挺有意思的,于是上来分享一波. 废话不多说,让我们愉快地开始吧~ 开发工具 Python版本:3.7.8 相关模块: DecryptLogin模块: 以及一些python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原

  • 基于Python编写一个语音合成系统

    目录 背景 语音合成系统 准备工作 步骤 代码实现 背景 一直对语音合成系统比较感兴趣,总想能给自己合成一点内容,比如说合成小说,把我下载的电子书播报给我听等等. 语音合成系统 其实就是一个基于语音合成的工具,但是这个东西由于很多厂家都提供了API的形式,因此开发难度大大降低,只需要调用几个API即可实现属于自己的语音合成工具:麻雀虽小,五脏俱全.往大了说,这就是一个小型的语音合成系统. 准备工作 首先我们电脑上需要安装 Anaconda Python 3.7 visual studio cod

  • 基于Python编写一个简单的端口扫描器

    目录 1.需要的库 2.获取一个 host 地址 3.循环所有的端口 4.完整脚本 端口扫描是非常实用的,不止用在信息安全方面,日常的运维也用得到.这方面的工具也不要太多,搞过 CTF 的朋友会告诉你有多少端口扫描工具,那为什么还要用 Python 再自己实现一遍?这个问题就像饭店里的菜已经很好吃了,为什么还要自己烧菜一样,主要还是为了适合自己的口味,添加自己需要的个性功能. 今天我们将用 20 行代码编写一个简单的端口扫描器.让我们开始吧! 1.需要的库 都是标准库,因此内网环境也不影响: i

  • 基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算

    方法一: 结合lambda表达式.函数调用运算符.标准库函数对象.C++11标准新增的标准库function类型,编写一个简单的计算器,可实现简单的加.减.乘.除.取余二元运算.代码如下: #include "pch.h" #include <iostream> #include <functional> #include <map> #include <string> using namespace std; int add(int i

随机推荐