#-*- coding: utf-8 -*-#@Time : 18-12-31 下午4:21#@Author : Felix Wang

from tkinter import *

importtkinter.font as tkFontimportrandomimportgcimportos, sysimportchardetimportcopyfrom threading importThreadimporttimedefresource_path(relative):"""图片路径

:param relative:

:return:"""

if hasattr(sys, "_MEIPASS"):returnos.path.join(sys._MEIPASS, relative)returnos.path.join(relative)defcenter_window(root, width, height):"""中心大小

:param root: tk对象

:param width:

:param height:

:return:"""screenwidth=root.winfo_screenwidth()

screenheight=root.winfo_screenheight()

size= '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)

root.geometry(size)defclear():

lb.delete(0, END)defget_names():

names=[]

name_path= os.path.join(BASE_DIR, 'name.txt')

with open(name_path,'rb') as f:

data=f.read()

cod= chardet.detect(data)['encoding']if 'gb' instr(cod):

cod= 'gbk'

for name in data.decode(cod).strip().split('\n'):ifname.strip():

names.append(name.strip())returnnamesclassMyThread(Thread):def __init__(self):

self.ifdo=False

self.auto_choise=False

self.is_auto= -1super().__init__()defrun(self):whileTrue:if self.is_auto isTrue:whileself.ifdo:

index= random.randint(0, len(names) - 1)

echo["text"] =names[index]

root.update_idletasks()

time.sleep(1 / 23 - 0.003)

self.is_auto= -1

elif self.is_auto isFalse:ifself.auto_choise:

self.auto()

self.is_auto= -1time.sleep(0.1)defstop(self):"""手动抽奖时点击停止按钮时的操作

:return:"""

ifself.is_auto:

self.ifdo=False

button2["text"] = '手动抽奖'pict['image'] =huaji_gif

_name=random.choice(names)

echo["text"] =_name

lb.insert(END, _name)

root.update_idletasks()

root.update()for x inlocals().keys():dellocals()[x]

gc.collect()

pict['image'] =huaji_gif

scrolly.update()defgo(self):"""手动开始时的停止标记

:return:"""

if self.is_auto == -1:

self.is_auto=True

self.ifdo=True

pict["image"] =huang_gif

button2["text"] = '点击停止'

defauto_start(self):"""自动开始设置更改标记

:return:"""

if self.is_auto == -1:

self.is_auto=False

self.auto_choise=True

pict["image"] =huang_gif

button["text"] = '先别点我'

globalft1

ft1= tkFont.Font(family='Fixdsys', size=80, weight=tkFont.BOLD)defauto(self):"""自动开始时执行的操作

:return:"""copy_names=copy.deepcopy(names)

ren=int(v.get())for i inrange(ren):for a in range(23):

index= random.randint(0, len(names) - 1)

echo["text"] =random.choice(names)

root.update_idletasks()

time.sleep(1 / 23 - 0.003)

choise_name=copy_names.pop(random.choice(range(len(copy_names))))

echo["text"] =choise_name

lb.insert(END, choise_name)if i == ren - 1:

pict['image'] =huaji_gif

button["text"] = '开始抽奖'

for a in range(5):

root.update()

time.sleep(0.06)

root.update_idletasks()for x inlocals().keys():dellocals()[x]

gc.collect()

scrolly.update()

self.auto_choise=False

flag=Falsedefname2():globalflag

flag= notflagifflag:

tr.go()else:

tr.stop()defname():

tr.auto_start()try:

BASE_DIR= os.path.dirname(os.path.abspath(__file__))

names=get_names()

root=Tk()

root.title("随机抽奖器(by 王以涛)")

center_window(root,570, 160)

ft= tkFont.Font(family='Fixdsys', size=40, weight=tkFont.BOLD)

ft1= tkFont.Font(family='Fixdsys', size=80, weight=tkFont.BOLD)

echo= Label(root, text='随机抽奖', font=ft, width=8) #默认显示

echo.grid(row=1, column=1, columnspan=2)

scrolly=Scrollbar(root)

scrolly.grid(row=1, column=5, rowspan=2, ipady=30)

lb= Listbox(root, yscrollcommand=scrolly.set, exportselection=False, height=6)

lb.grid(row=1, column=3, rowspan=2, columnspan=2, pady=0)

scrolly['command'] =lb.yview#button = Button(root, text='删除所选名字', command=lambda x=lb: x.delete(ACTIVE))

#button.grid(row=3, column=3)

button = Button(root, text='删除所有名字', command=clear)

button.grid(row=3, column=4)

v=StringVar()

Scale(root, from_=1, to=len(names), resolution=1, orient=HORIZONTAL, variable=v).grid(row=2, column=1, columnspan=2)#抽奖时的图片

data_dir = os.path.join(BASE_DIR, "img")

huaji_gif= PhotoImage(file=resource_path(os.path.join(data_dir, 'huaji.gif')))

huang_gif= PhotoImage(file=resource_path(os.path.join(data_dir, 'huang.gif')))

pict= Label(root, image=huaji_gif)

pict.grid(row=1, column=0, rowspan=3)

button= Button(root, text='自动抽奖', command=name)

button.grid(row=3, column=1, columnspan=1)

flag=False

button2= Button(root, text='手动抽奖', command=name2)

button2.grid(row=3, column=2, columnspan=1)

tr=MyThread()

tr.setDaemon(True)

tr.start()

root.mainloop()exceptException as e:print('错误信息', e)

time.sleep(60)

怎么用python制作随机点名软件_python写一个随机点名软件相关推荐

  1. 怎么用python制作随机点名软件_python写一个随机点名软件的实例

    最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...

  2. python随机点名程序 图形化_python写一个随机点名软件,python随机点名,最近有个随机点名软件...

    python写一个随机点名软件,python随机点名,最近有个随机点名软件 最近有个随机点名软件的需求,故写了一个,上代码:github地址# -*- coding: utf-8 -*-# @Time ...

  3. python课程设计编写电子通讯录_python写一个通讯录

    闲着没事,用python写一个模拟通讯录,要求要实现常用的通讯录的功能,基本流程如下 ​ 接下来就按照这个流程实现各个模块的功能 1. 定义一个类,并初始化 def __init__(self): w ...

  4. python定义定长数组_python 初始化一个定长的数组实例

    python 初始化一个定长的数组实例 ​# 有时候我们提前知道了一个数组的大小,需要给每个元素赋值,此时append好像不管用.我们需要定义一个定# # 长的数组, python中代码如下: b = ...

  5. python抢票软件代码_Python 写一个抢票软件

    总体设计 所谓抢票软件,本质上就是基于浏览器驱动,实现登录.预定.确认信息的自动化.购买列车票涉及4个网页,相应的基本流程如下: 登录:输入用户名.密码,识别验证码,点击"登录": ...

  6. python计算时间装饰器_python 写一个计算运行时间的装饰器

    面试题之中的一个. 写一个装饰器wraps,它接收一个參数t.假设函数运行时间超过1秒,输出"bad",否则输出"goods". 首先,计算函数的运行时间: i ...

  7. python编写一个软件-python写一个随机点名软件的实例

    最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...

  8. python写软件实例-python写一个随机点名软件的实例

    最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...

  9. python制作词典软件_AlphaDict: 它是一个轻量级的开放词典格式的开源词典软件,你可以制作自己的词典, 也是一个跨平台的软件支持 linux, unix and windows....

    关于 "阿尔法词典" =============== 版本号: 1.4.1 作者: 李力琼 (joni lee) 网站: prajna.top 它是一个轻量级的开放词典格式的开源 ...

最新文章

  1. Update msi using vbscript
  2. 基于java+springboot+mybatis 网上商城项目设计和实现
  3. 注意力机制BAM和CBAM详细解析(附代码)
  4. 包括循环和分支的C语言程序,《C语言程序设计》分支和循环的C程序设计.ppt
  5. 初学者python笔记(类的内置属性)
  6. Python自动化开发课堂笔记【Day06】 - Python基础(模块)
  7. Qt VS中设置.ui文件的生成的.h的目录
  8. python 特别慢_Python很慢?不一定哦
  9. httpd2.4.39直接访问路径下的ceb文件,显示乱码
  10. 华为y220t android版本升级,华为 Y220T 刷机详细图文教程
  11. 论文 图片配色 漂亮颜色
  12. plupload踩坑小结
  13. count计时器java,倒计时器CountDownLatch
  14. 爬虫实战之selenium淘宝抢购订单
  15. Cisco(PacketTracer) - 三层交换机
  16. 元宇宙营销新时代| 元宇宙数字营销峰会于7月29日在上海淳大万丽酒店盛大开幕!
  17. 进入虚拟机的任务管理器命令
  18. 非相参积累 matlab,非相参积累增益,比相参积累增益更难计算?
  19. python 使用xpath获取网页标签内容
  20. C#医院门诊会员管理系统源码 通用会员系统源码

热门文章

  1. 致敬经典:Ball and Brown (1968)
  2. Go安装报错The installer has insufficient privileges to access thisdirectory: C:\ProgramData\.. 的解决方法
  3. 《数据库系统原理》第一遍思维导图
  4. 直播报名丨“声AI · 新时代” 《中国声学智能产业发展和技术应用白皮书》重点解读
  5. 构建能源物联网,助力电力物联网数据服务
  6. 关于计算机病毒事件,计算机病毒的事件
  7. 苹果系统地图定位服务器,苹果手机能1秒定位对象在哪?你知道吗?
  8. python基础(六)函数
  9. 大学物理 习题分析与解答(PDF)
  10. Morto蠕虫病毒分析报告