最近有个随机点名软件的需求,故写了一个,上代码: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(' '):

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写一个随机点名软件的实例相关推荐

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

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

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

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

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

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

  4. python随机点名程序 图形化,python写一个随机点名软件的实例

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

  5. 怎么用python制作随机点名软件_python写一个随机点名软件

    #-*- coding: utf-8 -*-#@Time : 18-12-31 下午4:21#@Author : Felix Wang from tkinter import * importtkin ...

  6. 利用js随机数,写了一个随机点名的简单代码

    一.问题或解决方法应用场景. 利用js写了一个随机点名的代码 二.直接粘贴代码获取图片 1. 先写一个获取随机数的代码 获取min-max 的随机整数,包括min,max function getRa ...

  7. 用JS实现一个随机点名系统(五)

    用JS实现一个随机点名系统 每次上课前10分钟,老师都会叫我们回答问题,奈何每次都是点学号,好像每次我都能中奖,我直接跟老师提议,老师,我用来JS来帮你写个随机点名的系统吧!这样就不会每次都 抽到我了 ...

  8. 自动点名系统c语言,用C语言编写一个随机点名系统

    /*编写一个随机点名系统,运行该系统后,按空格键可以显示出一名同学,以前被选中的同学,将不会再次被选中*/ #include /*standard input & output*/ #incl ...

  9. 用php实现随机点名,使用javascript做的一个随机点名程序

    这篇文章主要介绍了使用javascript做的一个随机点名程序,经测试,效果相当不错,需要的朋友可以参考下 /p> "http://www.w3.org/TR/html4/loose. ...

最新文章

  1. php 任意文件上传,任意文件上传漏洞
  2. NLP-Progress记录NLP最新数据集、论文和代码: 助你紧跟NLP前沿
  3. java程序员修炼之道
  4. mysql行锁同索引键问题_mysql 锁问题 (相同索引键值或同一行或间隙锁的冲突)
  5. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建
  6. mysql5.7安装
  7. 专用工业接口电缆行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. 书写「简历」时,需要规避的错误
  9. bzoj2705: [SDOI2012]Longge的问题
  10. BPTT算法推导以及LSTM是如何解决梯度消失的
  11. c#设计模式之简单工厂
  12. 一文教会你使用Markdown来制作一份简洁明了的求职简历
  13. 和10位CIO,聊了聊他们今年的OKR
  14. 悲剧:金山毒霸官网被黑客攻破
  15. SuperMap iDesktop常见问题解答集锦 (一)
  16. office2007加载缓慢_word2007打开特别慢怎么解决
  17. 二 Python 基本数据类型
  18. 从现在,看未来---Linux Kernel 未来发展方向
  19. 怀孕后可使用计算机吗,怀孕可以用电脑工作吗?使用须适当
  20. 400亿票房跟股市有什么关系

热门文章

  1. STC16f40k128——新建工程模板
  2. 万亿规模的二手交易市场,真的是门好生意吗?
  3. 调试OpenGL ES应用程序
  4. Libsvm和Liblinear的使用经验谈
  5. ASUS(华硕) 天选air系统 2022 FX517ZC FX517ZE FX517ZM FX517ZR原厂Windows11系统 工厂系统安装 带一键恢复 华硕原厂系统ROG系统下载华硕OEM系统
  6. C#实现气泡屏保(1个timer实现)
  7. 工程安装与部署中处理环境变量的最佳实践
  8. python 化学计量学_比特原子 Atombit
  9. 易强百度邮件搜索专家 v2.0 是什么
  10. Java中new的作用