使用 pyinstaller 打包工具常用参数指南

pyinstaller -F demo.py

参数 含义

-F 指定打包后只生成一个exe格式的文件

-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 = './fonts/simhei.ttf'

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, sheet.nrows, sheet.ncols

job_num = sheet.cell(0, 0).value

job_name = sheet.cell(0, 1).value

for row in range(1, sheet.nrows):

job_num = sheet.cell(row, 0).value

job_name = sheet.cell(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):

if pygame.mouse.get_pressed()[0]:

x, y = pygame.mouse.get_pos()

x -= drum_stick_obj.get_width() / 2

y -= drum_stick_obj.get_height() / 2

if all((mouse_range.get('top')-50 < y < mouse_range.get('bottom'),mouse_range.get('left')-50 < x < mouse_range.get('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('播放')

if name_list:

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 pygame.event.get():

if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:

pygame.quit()

exit()

if event.type == pygame.MOUSEBUTTONDOWN:

x,y = pygame.mouse.get_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.mixer.music.get_busy():

# pygame.mixer.music.play()

# 重新刷新背景图片 防止重影

screen.blit(bgImageObj, (0, 0))

# 获取鼠标位置,使用 图片替代

x, y = pygame.mouse.get_pos()

x -= drum_stick_obj.get_width() / 2

y -= drum_stick_obj.get_height() / 2

pygame.mouse.set_visible(False)

screen.blit(drum_stick_obj,(x,y))

# 抽奖结果展示

font = pygame.font.Font(font_file, 40)

text_obj = font.render(text_context, True, (255, 255, 255), (0, 0, 0))

text_pos = text_obj.get_rect()

text_pos.center = (500, 50)

screen.blit(text_obj, text_pos)

# 作者以及版本信息

font2 = pygame.font.Font(font_file, 10)

text_obj = font2.render('软件作者 {} , 版本号: {}'.format(__author__,__version__), True, (255, 255, 255), (255, 0, 0))

text_pos = text_obj.get_rect()

text_pos.center = (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 解释器进行解释,实现 Python 的 GUI 界面。

对比Tk和其它语言的绑定,比如 PerlTk ,是直接由 Tk 中的 C 库实现的。

历史最悠久, Python 事实上的标准 GUI , Python 中使用 Tk GUI 工具集的标准接口,已经包括在标准的 Python Windows 安

装中,著名的 IDLE 就是使用 Tkinter 实现 GUI 的创建的 GUI 简单,学起来和用起来也简单。

wxPython

Python 对跨平台的 GUI 工具集 wxWidgets ( C++ 编写)的包装,作为 Python 的一个 扩展模块实现。

比较流行的一个 Tkinter 的替代品,在 各种平台下都表现挺好。

PyGTK

一系列的 Python 对 GTK+ GUI 库的包装。

比较流行的一个 Tkinter 的替代品,许多 Gnome 下的著名应用程序的 GUI 都是使用 PyGTK 实现的,比如 BitTorrent , GIMP和 Gedit 都有可选的实现,在 Windows 平台 似乎表现不太好,这点也无可厚非,毕竟使用的是GTK 的 GUI 库。

PySide

另一个 Python 对跨平台的 GUI 工具集 Qt 的包装,捆绑在 Python 当中,最初由 BoostC++ 库实现,后来迁移到 Shiboken。

比较流行的一个 Tkinter 的替代品,和上 面类似,至于两者的区别,这里 有一个介绍。

PyQt 的介绍 : http://en.wikipedia.org/wiki/PyQt

Tkinter 的介绍 : http://en.wikipedia.org/wiki/Tkinter

wxPython 的介绍 : http://en.wikipedia.org/wiki/WxPython

PyGTK 的介绍 : http://en.wikipedia.org/wiki/PyGTK

PySide 的介绍 : http://en.wikipedia.org/wiki/PySide

python 抽奖库_用 python 写一个年会抽奖小程序相关推荐

  1. python文件分发_python 写一个文件分发小程序

    一.概述 该小程序实现从源端到目标端的文件一键拷贝,源端和目标段都在一台电脑上面,只是目录不同而已 二.参数文件说明 1. settings.txt的说明 a. 通过配置settings.txt,填源 ...

  2. python123程序设计题说句心里话_用c++写一个简单的计算器程序

    // 050305.cpp : 定义控制台应用程序的入口点. // // 050304.cpp : 定义控制台应用程序的入口点. // //四则运算 #include "stdafx.h&q ...

  3. 用Windows自带的工具写一个一键关机小程序

    如何用Windows自带的工具写一个一键关机小程序 工具/原料(打勾勾的可用可不用) 装有Windows系统的电脑 在机子上装个格式工厂(版本随意,最好更新到最新的) 制作环境 windows自带命令 ...

  4. 用微信开发者小程序写一个加法计算器小程序

    文章目录 前言 一.calculator.wxml代码 二.calculator.js代码 结果 前言 提示:用软件微信开发者小程序写一个加法计算器小程序 一.calculator.wxml代码 &l ...

  5. python鼠标绘图_python 基于opencv 实现一个鼠标绘图小程序

    需求 在画布上用鼠标画图,可以画圆或矩形,按m键在两种模式下切换.左键按下时开始画图,移动到哪儿画到哪儿,左键释放时结束画图. 实现思想 用鼠标画图:需要定义鼠标的回调函数mouse_event 画圆 ...

  6. 用java做一个简单记事本_用记事本写一个简单的java程序

    用记事本写一个简单的java程序 第一步: 安装好jdk,并设置好环境变量. 桌面-计算机(右键)-属性-高级系统设置-环境变量-path-在变量值后加上:和jdk安装路径加上(路径即为C:\Prog ...

  7. python画出送花表情图编程_用Python来写一个男女相亲小程序|码农的情人节

    阅读本文大概需要5分钟 码农的情人节 一年一度的情人节要来啦,这个浪漫温馨的节日,走在大街小巷,走在地铁里,走在商场里,走在电影院,姑娘们手里几乎都捧着一束花,心里都是乐滋滋的,一脸幸福的样子,忽然想 ...

  8. python中函数是一段子程序_用Python来写一个男女相亲小程序|码农的情人节

    功能: 你输入你的性别,年龄,生日,我程序就给匹配一下你喜欢的类型,下面我们具体来讲讲怎么用Python写 第一部分:用户输入部分 1.获取用户的输入:我们用raw_input() args =raw ...

  9. c调用python第三方库_用 Python ctypes 来调用 C/C++ 编写的第三方库

    看到一篇简洁的文章--如何用Python ctypes调用C++(ctypes调用C没这么多麻烦事),不敢独享... 如果需要用 Python 调用 C/C++ 编写的第三方库(这些第三方库很可能就是 ...

最新文章

  1. xp系统下访问的两个组策略设置
  2. 一篇RxJava友好的文章(一)
  3. 不值钱的软件人才[转]
  4. github单独下载某个文件或文件夹
  5. 新版scipy中的imread,imsave,imresize被弃用解决方法
  6. java 共享软件 保护_【Java并发.3】对象的共享
  7. lol手游账号被移至美洲服务器,LOL手游“行窃预兆”遭玩家嫌弃,移除偷钱后成最鸡肋符文?...
  8. 各大媒体优劣对比_主流酱油选购对比
  9. Android ADB设备离线,无法发出命令
  10. vc 可用的正则表达式库
  11. ubuntu切换用户root时认证失败
  12. 题解(5-8)-----寒假练习赛(一)
  13. 通用数据库连接工具--DbVisualizer的使用
  14. 【原创】基于.NET的轻量级高性能 ORM - TZM.XFramework
  15. 分割符(split)
  16. xpath中的position()函数使用
  17. java date类型大小比较_java中date类型如何比较大小
  18. Layui table表格操作列,按钮过多时展开点击失效问题解决方法
  19. 5.2 前端开发日报
  20. 凹凸世界搬运工机器人图片_【图片】【原创】凹凸世界后续剧情_凹凸世界吧_百度贴吧...

热门文章

  1. 计算机网络各层设备故障及可行的解决方案
  2. RGB565部分常用颜色对照表
  3. 多目标跟踪 TAO 数据集使用方法分享
  4. MSN群每周讨论之快速估算和管理
  5. Ubuntu-samba服务器的搭建
  6. Word文档如何在方框里打勾?三招让你从入门到精通,工作效率翻倍
  7. 微信java精简版低内存_微信精简版低内存apk-微信精简版2019下载v7.0.6 安卓版-腾牛安卓网...
  8. COG注释[Ubuntu 15.10系统]
  9. 什么叫北上资金,北向资金什么意思?
  10. android其实很简单 -- roaster 以代码构建代码