python随机点名程序 图形化,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 Thread
import time
def resource_path(relative):
"""
图片路径
:param relative:
:return:
"""
if hasattr(sys, "_MEIPASS"):
return os.path.join(sys._MEIPASS, relative)
return os.path.join(relative)
def center_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)
def clear():
lb.delete(0, END)
def get_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' in str(cod):
cod = 'gbk'
for name in data.decode(cod).strip().split('\n'):
if name.strip():
names.append(name.strip())
return names
class MyThread(Thread):
def __init__(self):
self.ifdo = False
self.auto_choise = False
self.is_auto = -1
super().__init__()
def run(self):
while True:
if self.is_auto is True:
while self.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 is False:
if self.auto_choise:
self.auto()
self.is_auto = -1
time.sleep(0.1)
def stop(self):
"""
手动抽奖时点击停止按钮时的操作
:return:
"""
if self.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 in locals().keys():
del locals()[x]
gc.collect()
pict['image'] = huaji_gif
scrolly.update()
def go(self):
"""
手动开始时的停止标记
:return:
"""
if self.is_auto == -1:
self.is_auto = True
self.ifdo = True
pict["image"] = huang_gif
button2["text"] = '点击停止'
def auto_start(self):
"""
自动开始设置更改标记
:return:
"""
if self.is_auto == -1:
self.is_auto = False
self.auto_choise = True
pict["image"] = huang_gif
button["text"] = '先别点我'
global ft1
ft1 = tkFont.Font(family='Fixdsys', size=80, weight=tkFont.BOLD)
def auto(self):
"""
自动开始时执行的操作
:return:
"""
copy_names = copy.deepcopy(names)
ren = int(v.get())
for i in range(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 in locals().keys():
del locals()[x]
gc.collect()
scrolly.update()
self.auto_choise = False
flag = False
def name2():
global flag
flag = not flag
if flag:
tr.go()
else:
tr.stop()
def name():
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()
except Exception as e:
print('错误信息', e)
time.sleep(60)
python随机点名程序 图形化,python写一个随机点名软件的实例相关推荐
- python随机点名程序 图形化_python写一个随机点名软件,python随机点名,最近有个随机点名软件...
python写一个随机点名软件,python随机点名,最近有个随机点名软件 最近有个随机点名软件的需求,故写了一个,上代码:github地址# -*- coding: utf-8 -*-# @Time ...
- c语言rand随机输出字母,菜鸟求助,写一个随机输出26个英文字母的程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include // 用srand.rand函数了 #include // 用time函数了 #define LEN 32 // 产生 ...
- c语言生成随机英文字母,菜鸟求助,写一个随机输出26个英文字母的程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include // 用srand.rand函数了 #include // 用time函数了 #define LEN 32 // 产生 ...
- python编写一个软件-python写一个随机点名软件的实例
最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...
- 怎么用python制作随机点名软件_python写一个随机点名软件的实例
最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...
- python写软件实例-python写一个随机点名软件的实例
最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...
- python期末大作业-图形化爬虫
爬虫部分 数据库部分 ui部分 文件系统部分 数据简单分析部分 结果演示: 上述展示的是主页面,当点击提交的时候会进行线程的开启来进行数据的爬取,当然,在点击的时候也会有简单的检验功能,url的填写要 ...
- Python代写CSSE1001/7030 python程序作业、代做python CSSE1001/7030程序作业、 代写CSSE1001/7030 python 作业...
Python代写CSSE1001/7030 python程序作业.代做python CSSE1001/7030程序作业. 代写CSSE1001/7030 python 作业 Uno++ Assignm ...
- 怎么用python画简单的图-使用Python中的Turtle库绘制简单的图形
Turtle图形库 Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种: 画笔控制函数 penup():抬起画笔: pendow ...
最新文章
- 理解C++ lvalue与rvalue
- linux命令哲学,Linux哲学思想、history实现执行命令的时间、Linux命令格式
- Python入门:生成器并行(协程)
- b+树的增删改查_EF Core / 基础_从建库到增删改查
- angular4与高德地图的结合
- BlueScreenView: 系统蓝屏分析工具
- win7桌面上显示html,win7如何在桌面显示ie图标|win7在桌面显示ie图标两种方法
- xp计算机u盘重装系统,解决戴尔电脑u盘重装系统xp教程
- C/C++/Linux工程师学习资料干货路线这都有,从入门到实战!【CSDN宝藏资料图鉴第二期】
- JS十六进制转浮点、字符串转为ArrayBuffer、ArrayBuffer转16进制字符串、16进制转10进制、crc校验位、十六进制转中文字符串(小程序、浏览器)、十六进制字符串转ascall字串
- 对抗样本的创建和防御
- python用matplotlib画五角星_3.用Python画五角星
- 青年大学习自动名单核对程序(使用教程)
- Vim中如何全选并复制?
- 955 互联网公司白名单来了!这些公司月薪20k,没有996!福利榜国内大厂只有这家!...
- CPU使用率过高问题排查及Linux之top命令用法详解
- 视觉语言导航综述Visual Language Navigation
- NTP网络时间服务器应用“智能交通‘边缘云脑’系统
- Selenium + Python 自学笔记(第九天)
- 重装Intel核显后,设备管理器英特尔显卡属性这里报告了一个未启动设备(igfx)