pycharm随机点名(包含姓名、学号和图)

编程入门 行业动态 更新时间:2024-10-10 16:20:27

pycharm随机点名(包含姓名、<a href=https://www.elefans.com/category/jswz/34/1749601.html style=学号和图)"/>

pycharm随机点名(包含姓名、学号和图)

**特点:**包含姓名、学号和图对应滚动,随机点名
代码如下:

'''
*****************************
利用窗体随机点名
包含图的滚动
*****************************
'''from tkinter import *  #窗体
import tkinter as tk
import time  #时间
from PIL import Image,ImageTk  #图
import os
import glob  #文件中调图用class RandomName(Frame):def __init__(self, parent=None, **kw):  #定义类中属性,_init_为python固定用法Frame.__init__(self, parent, kw)self.name_list = []  #存放姓名self.num_list=[]  #存放学号self.pic_list=[]  #存放图self._start = 0.0self._elapsedtime = 0.0self._running = False  #是否正在运行self.timestr = StringVar()  #姓名临时变量self.timestr2=StringVar()  #学号临时变量self.timestr3=StringVar()  #图self.makeWidgets()  #定义标签栏def makeWidgets(self):  #调用set_name函数方法#self.timestr = '姓名'labName = Label(self, textvariable=self.timestr, font=("Arial, 35"))  #令标签临时变量为self.timestr,改变其赋值就可改变文本显示self.set_name(self._elapsedtime)  #调用set_name函数方法labName.pack()#self.timestr2 = '学号'labNum = Label(self, textvariable=self.timestr2, font=("Arial, 35"))#self.set_name(self._elapsedtime)  #调用set_name函数方法labNum.pack()def set_name(self, elap):  #elap为一个时间参数# 随机产生姓名cur = int(elap * 100 % 30)  #列表中序号name_list = ['生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎','周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲', '易江维', '孙来笙', '饶展林','岳列洋', '时党舒', '周迟蒲', '廉梦容', '张淮森', '夏劲釜', '好隐', '刘昼星','池弈', '邹包幼', '施峪', '武慎萌', '范千皋', '潘佩焱']num_list = ['1', '2', '3', '4', '5', '6', '7', '8','11', '22', '33', '44', '55', '66', '77', '88','111', '222', '333', '444', '555', '666', '777', '888','1111', '2222', '3333', '4444', '5555', '6666']image_dir = r"F:\PythonFiles\PycharmFile\picture"file_glob = os.path.join(image_dir, "*." + "png")  #图的数量要和姓名数量一样self.pic_list.extend(glob.glob(file_glob))self.timestr.set(name_list[cur])  #给姓名标签赋值self.timestr2.set(num_list[cur])  #给学号标签赋值#self.timestr3.set(self.pic_list[cur])self.pic_label(self.pic_list[cur])# 更新显示内容def update(self):self._elapsedtime = time.time() - self._startself.set_name(self._elapsedtime)  # 设置显示内容self._timer = self.after(50, self.update)  # 刷新界面# 开始按钮def Start(self):if  self._running==False:  #初始为默认为falseself._start = time.time() - self._elapsedtimeself.update()self._running = True# 暂停按钮def Stop(self):if self._running==True:self.after_cancel(self._timer)self._elapsedtime = time.time() - self._startself.set_name(self._elapsedtime)self._running = False# 显示窗口def name_label(self):btnStart=Button(self, text='start', command=self.Start, width=10, height=2)btnStart.pack()btnEnd=Button(self, text='stop', command=self.Stop, width=10, height=2)btnEnd.pack()self.pack()# 定义图标签位def pic_label(self,path):img =path   # 路径photo = Image.open(img)  #利用Image模块打开图w,h=photo.size  #原始尺寸resizePhoto= self.pic_resize(w,h,153,153,photo)  #Image模块下利用自己的方法进行尺寸缩放tkPhoto=ImageTk.PhotoImage(resizePhoto)  #把Image图改为tkinter类型图labelImg = tk.Label(self, image=tkPhoto)labelImg.pack()labelImg.config(image=tkPhoto)  #以下两句代码非常重要,是保证图在函数中可以被加载的途径labelImg.image = tkPhotolabelImg.pack()labelImg.place(x=50, y=100)#缩放图的尺寸def pic_resize(self,w, h, w_box, h_box, pil_image):  #参数分别为:w和h为原始尺寸,w_bow和h_box为希望尺寸,pil_image为原图f1 = 1.0 * w_box / w  # 1.0 forces float division in Python2f2 = 1.0 * h_box / hfactor = min([f1, f2])width = int(w * factor)height = int(h * factor)return pil_image.resize((width, height), Image.ANTIALIAS)if __name__ == '__main__':  #这句代码意思是该文件被直接运行时才会运行以下代码;要是作为模块被其他文件引用时,不运行以下代码root = Tk()  #定义一个tkinter类root; Tkinter为图形界面库root.title("随机点名")  #标题root.geometry('450x450')  #窗体尺寸root.geometry('+400+100')  #窗体距离屏幕边缘尺寸sw = RandomName(root)  #一个实例,调用自定义的RandomName类,把窗体root实例传到类中sw.name_label()#sw.pic_label(r'F:\PythonFiles\PycharmFile\picture\exc30.png')root.mainloop()  #使窗口保持

未解决问题:
1)按钮总是遮挡图,如何进行tkinter中的布局?
2)图形部分总是在相同位置后面的图形遮挡前面的,而并不是后面的替换前面的,该如何解决?

希望各位对代码进行改进,并@我分享,谢谢

更多推荐

pycharm随机点名(包含姓名、学号和图)

本文发布于:2024-03-23 14:48:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1739436.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:学号   姓名   pycharm

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!