⽤python写⼀个年会抽奖⼩程序
使⽤ pyinstaller 打包⼯具常⽤参数指南
pyinstaller -F demo.py
参数含义
-F  指定打包后只⽣成⼀个exe格式的⽂件
flask 工作流引擎
-D  –onedir 创建⼀个⽬录,包含exe⽂件,但会依赖很多⽂件(默认选项)
-c  –console, –nowindowed 使⽤控制台,⽆界⾯(默认选项)
-w  –windowed, –noconsole 使⽤窗⼝,⽆控制台
-p  添加搜索路径,让其到对应的库。
-i  改变⽣成程序的icon图标
pyinstaller -F -w -noconsole Annual_awards_main.py --distpath=C:\Users\FrankLi\xxxx\dist --icon="./start.ico"
资源⽂件⽬录:
uploading-image-149426.png
完整代码第⼀版
# -*- coding: utf-8 -*-
__author__ = 'Frank Li'
__version__ = 1.0
import pygame
from pygame.locals import *
from sys import exit
import xlrd
import random
FULLSCREEN = False
MUSIC_FILE = './music/⽉之门 - ⽩龙⼝.mp3'
DRUM_STICK = './frontimgs/gc_cz.png'
font_file = './f'
excel_file = './employee/name_file.xlsx'
clock = pygame.time.Clock()
mode =  1 if FULLSCREEN else 0 # default 0 <--> Full Screen
mouse_range = dict(top=460,bottom=560,left=970,right=1030)
def get_name_list_from_excel(file_name):
'''"解析⼈员.xlsx ⽂件,得到⼈员名单列表"'''
name_list = []
excelFile = xlrd.open_workbook(file_name)
sheet = excelFile.sheet_by_name('employee')
#print sheet.name, ws, ls
job_num  = ll(0, 0).value
job_name = ll(0, 1).value
for row in range(1, ws):
job_num  = ll(row, 0).value
job_name = ll(row, 1).value
name_list.append((job_num, job_name))
return job_num, job_name, name_list
def handle_mouse_event(index,drum_stick_obj,pause_flag):
_pressed()[0]:
x, y = _pos()
x -= drum__width() / 2
y -= drum__height() / 2
if all((('top')-50 < y < ('bottom'),('left')-50 < x < ('right'))):
if all((('top')-50 < y < ('bottom'),('left')-50 < x < ('right'))):
print('coming ...')
pause_flag =  not pause_flag
if pause_flag:
pygame.mixer.music.stop()
print('暂停') if pause_flag else print('播放')
else:
pygame.mixer.music.play()
print('暂停') if pause_flag else print('播放')
python基础代码写字
if name_list:
python的index函数怎么用del name_list[index]
return index,pause_flag
if __name__ == '__main__':
job_num, job_name, name_list = get_name_list_from_excel(file_name=excel_file)
pygame.init()
if not FULLSCREEN:
screen = pygame.display.set_mode((1200,673),0,32)
bgImage = './bgimgs/bg_1366x768.png'
else:
screen = pygame.display.set_mode((1200, 673), 0, 32)
bgImage = './bgimgs/bg_1366x768.png'  # 这⾥替换⼀下
bgImageObj = pygame.image.load(bgImage).convert()
screen.blit(bgImageObj, (0, 0))
drum_stick_obj = pygame.image.load(DRUM_STICK).convert_alpha()
pygame.display.set_caption("年会抽奖⼩程序")
pygame.mixer.init()
pygame.mixer.music.load(MUSIC_FILE)
pygame.time.delay(1000) # 等待 1 s 钟
pygame.mixer.music.set_volume(0.5)  # 设置播放⾳量
pygame.mixer.music.play(-1) # 循环播放
pause_flag = False
if len(name_list):
index = random.randint(0,len(name_list)-1)
else:
prompt = '请检查员⼯信息表是否为空!'
while True:
clock.tick(60)
for event in ():
pe == pygame.QUIT pe == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
pygame.quit()
exit()
pe == pygame.MOUSEBUTTONDOWN:
x,y = _pos()
print(x,',',y)
index,pause_flag = handle_mouse_event(index,drum_stick_obj,pause_flag) # 暂停完成其实是将index再次返回重绘时候⼜⽤⼀样的
if not pause_flag:
# 若没有按下暂停键,那么每次循环都随机
if len(name_list):
index = random.randint(0, len(name_list)-1)
# 写字
pno = name_list[index][0]
pname = name_list[index][1]
text_context = '恭喜⼯号 {} 姓名{}  喜提特等奖!'.format(pno, pname)
else:
text_context = ' 年会抽奖完满结束,祝⼤家新年万事如意,阖家欢乐!'
# if not pygame._busy():英语课本functions什么意思
#    pygame.mixer.music.play()
#    pygame.mixer.music.play()
# 重新刷新背景图⽚防⽌重影
screen.blit(bgImageObj, (0, 0))
# 获取⿏标位置,使⽤图⽚替代
x, y = _pos()
x -= drum__width() / 2好看的鼠标图案
y -= drum__height() / 2
screen.blit(drum_stick_obj,(x,y))
# 抽奖结果展⽰
font = pygame.font.Font(font_file, 40)
text_obj = der(text_context, True, (255, 255, 255), (0, 0, 0))
text_pos = _rect()
= (500, 50)
screen.blit(text_obj, text_pos)
# 作者以及版本信息
font2 = pygame.font.Font(font_file, 10)
text_obj = der('软件作者 {} , 版本号: {}'.format(__author__,__version__), True, (255, 255, 255), (255, 0, 0))
text_pos = _rect()
= (1000, 650)
screen.blit(text_obj, text_pos)
pygame.display.update()
# 使⽤ pyinstaller 打包
pyinstaller -F -w -noconsole AnnualGame.py --distpath=C:\Users\FrankLi\PycharmProjects\jdquickbuy.py\game\dist --icon="./favicon.ico" python 主流 GUI 库
Python下各种GUI简介、使⽤优缺点对⽐
GUI编程对⽐
简介特点
优缺点
PyQt
Python 对跨平台的 GUI ⼯具集 Qt 的包装实现了 440 个类以及 6000 个函数或者⽅法,PyQt 是作为 Python 的插件实现的。
⽐较流⾏的⼀个 Tkinter 的替代品,功能⾮常强⼤,可以⽤Qt开发多美漂亮的界⾯,也就可以⽤PyQt开发多么漂亮的界⾯。跨平台的⽀持很好,不过在商业授权上似乎Tkinter
绑定了 Python 的 Tk GUI ⼯具集,就是Python 包装的Tcl代码,通过内嵌在 Python 解释器内部的 Tcl 解释器实现, Tkinter的调⽤转换成 Tcl 命令,然后交给 Tcl 解释对⽐Tk和其它语⾔的绑定,⽐如 PerlTk ,是直接由 Tk 中的 C 库实现的。
历史最悠久, Python 事实上的标准 GUI , Python 中使⽤ Tk GUI ⼯具集的标准接⼝,已经包括在标准的 Python Windows 安
装中,著名的 IDLE 就是使⽤ Tkinter 实现 GUI 的创建的 GUI 简单,学起来和⽤起来也简单。
forests中文翻译wxPython
Python 对跨平台的 GUI ⼯具集 wxWidgets ( C++ 编写)的包装,作为 Python 的⼀个扩展模块实现。
⽐较流⾏的⼀个 Tkinter 的替代品,在各种平台下都表现挺好。
PyGTK
⼀系列的 Python 对 GTK+ GUI 库的包装。
⽐较流⾏的⼀个 Tkinter 的替代品,许多 Gnome 下的著名应⽤程序的 GUI 都是使⽤ PyGTK 实现的,⽐如 BitTorrent , GIMP和 Gedit 都有可选的实现,在 Windows PySide
另⼀个 Python 对跨平台的 GUI ⼯具集 Qt 的包装,捆绑在 Python 当中,最初由 BoostC++ 库实现,后来迁移到 Shiboken。
⽐较流⾏的⼀个 Tkinter 的替代品,和上⾯类似,⾄于两者的区别,这⾥有⼀个介绍。
PyQt 的介绍 : /wiki/PyQt
Tkinter 的介绍 : /wiki/Tkinter
wxPython 的介绍 : /wiki/WxPython
PyGTK 的介绍 : /wiki/PyGTK
PySide 的介绍 : /wiki/PySide

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。