不足200行代码,我用python写了一个上课点名系统。还没开学的你们慌了吗?

 大家好,今天在地铁上刷到了一个这样的短视频,我寻思是不是也可以写一个类似的上课点名程序。 年底了,当然这个程序也可以用来抽奖。

不足200行代码,我用python写了一个上课点名系统。还没开学的你们慌了吗?_第1张图片

下面我们开始实操吧! 喜欢记得点赞、收藏、关注。

准备工作

1、Tkinter

Tkinter 是 python 内置的 TK GUI 工具集。TK 是 Tcl 语言的原生 GUI 库。作为 python 的图形设计工具,它所使用的 Tcl 语言环境已经完全嵌入到了 python 解释器中。

2、PIL

PIL 库是Python语言的第三方库,需要通过pip工具安装。安装PIL库的方法如下,需要注意,安装库的名字是pillow。

PIL库支持图像储存、显示和处理,他能够处理几乎所有图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。

使用PIL中的Image,ImageTk处理、引入一张图片,可以使用下面代码安装一下。

pip install pillow

1、启动

不足200行代码,我用python写了一个上课点名系统。还没开学的你们慌了吗?_第2张图片

双击打开后,进入软件主界面,所有功能一目了然。程序会自动识别软件目录下的names.txt,将里面的名字导入。

2、开始点名-顺序点名

正在上传…重新上传取消选择顺序点名后,点击开始,屏幕上就开始滚动出现人名,人名出现的概率是相同的,点击停止,人名就停止滚动,点名结束。

3、开始点名-随机点名

正在上传…重新上传取消点击随机点名,程序就会进行随机点名,人名出现的概率是随机的。

4、手动加载人名单

正在上传…重新上传取消可以自己手动选择人名单,前提是人名单格式为txt,且每个名字占一行。

5、开始点名-顺序点名-Pyqt5版本

正在上传…重新上传取消用 Pyqt5 也写了一个版本,实现逻辑与TK版本相同,界面可能更好看了一些,但是文件大了许多,大家可以在后面总结部分自取。

1、整体实现思路

不足200行代码,我用python写了一个上课点名系统。还没开学的你们慌了吗?_第3张图片

2、点名实现思路

不足200行代码,我用python写了一个上课点名系统。还没开学的你们慌了吗?_第4张图片

point_names-GUI.py(主程序GUI)

from base64 import b64decode

from PIL import Image,ImageTk

from tkinter import messagebox

from tkinter.filedialog import askopenfilename

imgs=['./point_name.png']

        self.running_flag=False #开始标志

        self.time_span=0.05 #名字显示间隔

        self.root.title('Point_name-V1.0')

        left = (self.root.winfo_screenwidth() - width) / 2

        top = (self.root.winfo_screenheight() - height) / 2

        self.root.geometry("%dx%d+%d+%d" % (width, height, left, top))

        self.root.resizable(0,0)

        self.create_widget()

        self.set_widget()

        self.place_widget()

        self.root.mainloop()

    def create_widget(self):

        self.label_show_name_var=StringVar()

        self.label_show_name=ttk.Label(self.root,textvariable=self.label_show_name_var,font=('Arial', 100,"bold"),foreground = '#1E90FF')

        self.btn_start=ttk.Button(self.root,text="开始",)

        self.btn_load_names=ttk.Button(self.root,text="手动加载人名单",)

        self.lf1=ttk.LabelFrame(self.root,text="点名方式")

        self.radioBtn_var=IntVar()

        self.radioBtn_var.set(1)

        self.radioBtn_sequence=ttk.Radiobutton(self.lf1,text="顺序点名",variable=self.radioBtn_var, value=1)

        self.radioBtn_random=ttk.Radiobutton(self.lf1,text="随机点名",variable=self.radioBtn_var, value=2)

        self.label_show_name_num=ttk.Label(self.root,font=('Arial', 20),foreground = '#FF7F50')

        paned = PanedWindow(self.root)

        img_=b'iVBORw0KGgoAAAANSUhEUgAAALQAAAB4CAIAAADUhU+qAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nO196XNbx5Vvd9+LfSU2EgD3fRNJbZRkyVJseY9sP7scOy+ZTCqpVKXm8/wp+TA1X2amJjWZSXksy1Ik27IsWXIsRpK1kCIpLgBJkAAXrMQO3K3fh0O0rkBKkaONzvOJSwGBu3b/+uznNKaUoh/oyZB6bDHG2+RSD0/807mNmth7ql/ymbz8EyL2LvdbeH/bC245bk+UHgQOSik8x8O85P0eHb5XX4pSSghRX7Pq+nAwxhi+3zwWlFJFURBC7Dr3G68tv3/0UYYnZC91P8IYw3NSSjmO23zTv/okbPTYaz7NlXMXHJtf+AHTw05hn9kxVaewi9AKVX2z+Sz1uQ+4KaVUlmVUGTIGvs2j/52e/6/SZlg/4PqKokiSVPWQD39TgFfVuD1tzgGvUbWg2dPcj7b8VT09DAQIIVmWy+VyqVSSZVl9I/bmWq1Wr9drNJrNs7uZtbAVqYbFlkey5atmXewF1S/7kC+oZlqMC255uqIoq6urgUDAYrF0dnaaTKa/OqRVd69aP9/p9Eene8CBNjE6NUNDD4FZOB5YKLsmQkiW5ZWVlatXrwaDQUIIx3HqSVUURRAEo9F44MCBoaEhQgicxR4JnoHN8fr6+urqqt1udzqdWq2WUipJEntCRVFEUczn85IkAWthj8Fux54NY2w0Gu12u06ne/DbMSjALWRZhj8VRaliCer5m5mZ+dd//Ve/3/9P//RPzc3NVQdseRYDgSzLmUwmm80aDAan0wnDAndnQ/RXRdujEM+eEu4hy3I4HI7H436/v6amplQqlUolk8lEKZ2enl5eXsYYGwwGs9lss9lqamqsVqtWqyWEwKip51uNelEU79y58/vf/x5j/NZbbxmNRhhZODifz1+7du369euyLPf29vI8rx6pbDa7vLxMKYX5SyQSly5dmp2dfemllw4ePGg2m3meRwhxHMdmLhwOX7p0aXV1tVgsptPpQqFgNBoNBgOs8mKxuL6+Til1OBw2m627u/vIkSN1dXVMLWCkZoFAsiwrilIqlTDGOp1uM7tSLwmMsc1mk2X55s2bx48fr6+v12g0Wq3W4/F0dHTU1NSoeR4ATpZleLxIJBIMBgOBQKlU2r9//0svvWSxWAAW6oX6RAXNXc4BA5fNZr/44ouRkZF33323r69vZGQklUodPXrU4/Gk0+lIJCIIQrlczmazuVzOaDQODg4+99xzdXV1VaKkimRZTqfTsVisr6/v9ddft9vtsDgURVEUJZlMrq6ufv3118B11FeQJGlpaenMmTPz8/OCIFBKE4nE3NwcAGJubs5ut1utVrPZ3NnZ2dTUBG9hNBqbmppsNlsikRgbGwsEAkePHu3r6wM2Mz8//5e//CWfz//iF78YGhpyu916vf5hBgseeGlp6ZtvvnE4HLt373Y4HADKKimJKuzKZDLZbLY7d+4EAgGEEMZYFMVoNOrxeOx2OzA2WCSCIMzPz09PTweDweXl5WKxuLKyMj8/73K53G53Z2dnS0uLRqPhOE69eJ4o3eUc8D6ZTObOnTuxWIzn+Xw+/5e//GVxcbG/v7+5ufm5557bvXu3LMuFQiGVSt25c+fEiRNXrlyRZfntt9+G8QUeK4pisVhkiphWq5VlGd4KY8zzPMgRjUbD8zxw5mw2azQanU4nzLpau6yrq3v++efNZvPJkydnZ2e7urqOHTtmMpkY4HieN5lMdrvd5/NptVqO4zwej9PpxBgvLS19++23Kysr+/bte/PNNzUajaIoo6OjIyMjq6urO3fuPHz4MDCMzeIcljKsVIbjRCJx4sSJTz755NVXX+3t7c3lcuVyGdgSE6aCICwtLYVCIUqpKIrALVwu1wsvvACMhOM4h8Oh5p3AsD/77LNwOOxyufbs2ePz+QghoVAI+Mfvfve7/v7+5557rrOz02KxMGXriSqnPCAdYC7Lci6XW19fNxqNNptNr9frdLpcLlcoFBBCWq1Wq9UqimK1Wl0ulyAIBoNBPXzwrIqiBAKB8+fPz8zMZDIZs9m8c+fOgwcPMsgXCoXx8fErV6709/cfOnTIYDCUSqVUKlVTUwMciC0+JuaLxeLY2FipVHr33XePHTvW2dnJ83ypVCqXy8BpCSE1NTUg4EDnKBQKiqKsr68XCgVRFDOZTDKZBJgmEolisSgIwurqajAY1Gg0NpvNbrczjg0THAqF1tbWmpuba2pqQqHQ+vp6bW3t3Nzc2bNnLRbL0NCQ0WgcGxv78ssv3W73Sy+91NTUBCtEEITLly9/+OGH5XLZ7XZnMhmtVjs2NpbNZmEAGxsbDx8+3NPTA4ISyO12/+hHPyoUCjU1NbW1tSB5BwcHs9lsMBgcGRn54osvbt68+bOf/ezgwYNwIwYOtRbyRMCRTqeTyeTk5GQkEiGEzMzMxGKxVCqVSqVGR0fr6+ubm5vhmSRJCoVCJ0+eDAQChw8f3rVrF8wKu6jH4xkcHIxGo+fPn3e73Tt37uQ4Tq/XG41GhFCxWLx9+/bFixeNRuP+/fthtqLRqN1ud7vdbJnCjdbW1r766quPP/74xo0b3d3dr7/++t69e3U6nSz

你可能感兴趣的:(程序员,Python,python,开发语言,后端)