python编写实现抽奖器
这篇文章主要为大家详细介绍了python编写实现抽奖器,文中代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
# coding=utf-8 import sys import os import openpyxl if sys.version_info[ 0 ] = = 2 : import Tkinter from Tkinter import * else : import tkinter as Tkinter from tkinter import * from tkinter import messagebox import random data = [] going = True is_run = False def getNameList(): path = os.getcwd() wb = openpyxl.load_workbook(r 'list.xlsx' ) sheet = wb[ "Sheet1" ] macList = [] for i in range ( 2 ,sheet.max_row + 1 ): macList.append(sheet.cell(row = i,column = 1 ).value) return macList def lottery_roll(var1, var2): global going if going: show_member = random.choice(data) var1. set (show_member) window.after( 50 , lottery_roll, var1, var2) else : var2. set ( '还有{}个小幸运鬼哟~' . format ( len (data))) going = True return def lottery_start(var1, var2): global is_run if is_run: messagebox.showwarning( '提醒' , '命运的齿轮正在疯狂转动哟!' ) return if len (data) = = 0 : messagebox.showwarning( '提醒' , '没有幸运儿了哟,快去抓几个吧!' ) return is_run = True var2. set ( '命运的齿轮开始转动起来啦~' ) lottery_roll(var1, var2) def lottery_end(): global going, is_run, data if is_run: if len (data) = = 0 : messagebox.showwarning( '提醒' , '没有幸运儿了哟,快去抓几个吧!' ) return show_member = random.choice(data) data.remove(show_member) print (show_member) var1. set (show_member) going = False is_run = False else : messagebox.showwarning( '提醒' , '命运的齿轮还没开动呢!' ) if __name__ = = '__main__' : data = getNameList() window = Tkinter.Tk() window.geometry( '800x500+500+200' ) window.title( '谁是幸运儿?' ) bg_label = Label(window, width = 800 , height = 500 , bg = '#ECf5FF' ) bg_label.place(anchor = NW, x = 0 , y = 0 ) var_title = StringVar(value = '谁是幸运儿?' ) show_label1_title = Label(window, textvariable = var_title, justify = 'left' , anchor = CENTER, width = 18 , height = 4 , bg = '#ECf5FF' , font = '楷体 -40 bold' , foreground = 'black' ) show_label1_title.place(anchor = NW, x = 200 , y = 0 ) var1 = StringVar(value = '<.<' ) show_label1 = Label(window, textvariable = var1, justify = 'left' , anchor = CENTER, width = 7 , height = 2 , bg = '#BFEFFF' , font = '楷体 -40 bold' , foreground = 'black' ) show_label1.place(anchor = NW, x = 320 , y = 200 ) var2 = StringVar(value = '共有{}个幸运儿,请开始游戏' . format ( len (data))) show_label2 = Label(window, textvariable = var2, justify = 'left' , anchor = CENTER, width = 25 , height = 4 , bg = '#ECf5FF' , font = '楷体 -25 bold' , foreground = 'red' ) show_label2.place(anchor = NW, x = 240 , y = 320 ) button1 = Button(window, text = '开始' , command = lambda : lottery_start(var1, var2), width = 14 , height = 2 , bg = '#A8A8A8' , font = '宋体 -18 bold' ) button1.place(anchor = NW, x = 210 , y = 400 ) button2 = Button(window, text = '结束' , command = lambda : lottery_end(), width = 14 , height = 2 , bg = '#A8A8A8' , font = '宋体 -18 bold' ) button2.place(anchor = NW, x = 450 , y = 400 ) window.mainloop() |
截图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我。
python编写实现抽奖器的更多相关文章
- python练习笔记——编写一个装饰器,模拟登录的简单验证
编写一个装饰器,模拟登录的简单验证(至验证用户名和密码是否正确) 如果用户名为 root 密码为 123则正确,否则不正确.如果验证不通过则不执行被修饰函数 #编写一个装饰器,模拟登录的简单验证 #只 ...
- 【转载】Python编写简易木马程序
转载来自: http://drops.wooyun.org/papers/4751?utm_source=tuicool 使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马. 首先准备好 ...
- [译]Python编写虚拟解释器
使用Python编写虚拟机解释器 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环 ...
- Python深入05 装饰器
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 装饰器(decorator)是一种高级Python语法.装饰器可以对一个函数.方法 ...
- Day04 - Python 迭代器、装饰器、软件开发规范
1. 列表生成式 实现对列表中每个数值都加一 第一种,使用for循环,取列表中的值,值加一后,添加到一空列表中,并将新列表赋值给原列表 >>> a = [0, 1, 2, 3, 4, ...
- 简单说明Python中的装饰器的用法
简单说明Python中的装饰器的用法 这篇文章主要简单说明了Python中的装饰器的用法,装饰器在Python的进阶学习中非常重要,示例代码基于Python2.x,需要的朋友可以参考下 装饰器对与 ...
- python编写网络抓包分析脚本
python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...
- Python进阶之装饰器
函数也是对象 要理解Python装饰器,首先要明白在Python中,函数也是一种对象,因此可以把定义函数时的函数名看作是函数对象的一个引用.既然是引用,因此可以将函数赋值给一个变量,也可以把函数作为一 ...
- 浅显易懂的谈一谈python中的装饰器!!
hello大家好~~我是稀里糊涂林老冷,一天天稀里糊涂的. 前一段时间学习了装饰器,觉着这东西好高大上哇靠!!哈哈,一定要总结一下,方便以后自己查阅,也希望帮助其他伙伴们共同进步! 装饰器: 大家可以 ...
随机推荐
- 在uniapp或者vue中单行文字或者符号无法换行的终极解决方案
在VUE开发过程中,会出现比较诡异的情况. 比如常规的英文或中文显示都是很正常的,但是当出现了一些中文符号(比如,!等等)在文末的时候,总是会超出view的显示区域. 那么在遇到上面这种问题我们记得检 ...
- CodeForces 79D 【Password】,洛谷P3943 【星空】
其实我做的是洛谷的P3943,但是听说fstqwq窃题...... 题目描述: 小 C 拿来了一长串星型小灯泡,假装是星星,递给小 F,想让小 F 开心一点.不过,有 着强迫症的小 F 发现,这串一共 ...
- Flutter 开发从 0 到 1(四)ListView 下拉加载和加载更多
在<APP 开发从 0 到 1(三)布局与 ListView>我们完成了 ListView,这篇文章将做 ListView 下拉加载和加载更多. ListView 下拉加载 Flutter ...
- 解决mybatis-plus更新数据的时候,有值为空导致更新失败的问题
问题 在用mybatis-plus更新数据的时候,更新失败,错误信息如下: Cause: org.apache.ibatis.type.TypeException: Could not set par ...
- jquery购物车全选,取消全选,计算总金额
这是html代码 <div class="gwcxqbj"> <div class="gwcxd center"> <div cl ...
- golang 语言的特性
给函数传递参数的时候 map.slice.channel是按引用传递的 同一个变量不能用 := 这种方式创建并赋值两次. 一个包(package)的func .结构体类型变量如果要被外部的包调用.fu ...
- 多测师讲解unittest介绍及自动化测试实现流程_高级讲师肖sir
unittest框架介绍 unittest框架是python中一个标准的库中的一个模块,该模块包括许多的类如 test case类.test suit类.texttest runner类.textte ...
- 通过MapReduce降低服务响应时间
在微服务中开发中,api网关扮演对外提供restful api的角色,而api的数据往往会依赖其他服务,复杂的api更是会依赖多个甚至数十个服务.虽然单个被依赖服务的耗时一般都比较低,但如果多个服务串 ...
- JavaWeb01_html&css
一. html简介 1. 什么是html ①. HyperText Markup Language:超文本标记语言,是最基本的网页语言 ②. 超文本:超出文本范畴 ③. 标记:标记就是标签,html所 ...
- day62 Pyhton 框架Django 05
内容回顾 1.变量 render(request,'模板文件名',{ k1:v1 }) {{ k1 }} {{ list.0 }} {{ dict.key }} {{ dict.keys }} {{ ...