python生日贺卡制作以及细节问题的解决最后把python项目发布为exe可执行程序过程
自己今天第一次做一个python生日贺卡:
效果图
参考之前有位大佬的作品,自己稍微的改造了一下下
首先:上程序
Birthday.py
- """
- ---------------------------------------
- Author:Zjh
- Date: -- :
- ---------------------------------------
- """
- #coding=utf-
- import turtle
- import random
- import time
- from turtle import *
- from random import *
- # set the background color for the page
- import time
- import pygame
- def make_cake(turtle,x=, y=):
- tina = turtle
- tina.penup()
- tina.color('white')
- tina.goto(x, y)
- tina.pendown()
- tina.begin_fill()
- tina.goto(x + , y)
- tina.goto(x + , y + )
- tina.goto(x - , y + )
- tina.goto(x - , y)
- tina.goto(x, y)
- tina.end_fill()
- tina.goto(x, y + )
- tina.color('blue')
- tina.goto(x, y + )
- tina.goto(x, y + )
- tina.color('black')
- tina.goto(x, y + )
- tina.penup()
- tina.goto(x, y + )
- file='media/front.mp3'
- pygame.mixer.init() #把mp3初始化出来
- #print("播放音乐1")
- track = pygame.mixer.music.load(file)
- pygame.mixer.music.play()
- #time.sleep()
- #tommy.reset()
- bg = turtle.Screen()
- bg.bgcolor("black")
- tommy = turtle.Turtle()
- tommy.shape("turtle")
- tommy.speed()
- tommy.penup()
- tommy.goto(-,)
- tommy.color("orange")
- tommy.write(",,ԾㅂԾ,,请小寿星插上耳机后观看哦 ",font=('微软雅黑', , 'normal'))
- time.sleep()
- tommy.clear()
- x = -
- y =
- tommy.goto(x,y)
- tommy.color("pink")
- pygame.mixer.music.stop()
- file='media/Happy.mp3'
- # pygame.mixer.init() #把mp3初始化出来
- #print("播放音乐1")
- track = pygame.mixer.music.load(file)
- pygame.mixer.music.play()
- time.sleep()
- tommy.penup()
- tommy.goto(x,y------------) #每次减25
- tommy.write(" φ(゜▽゜*)♪ 有“声音啦”,接下来我再增加点“五彩斑斓的颜色哦”。。。 ",font=('微软雅黑', , 'normal'))
- time.sleep()
- tommy.clear()
- tommy.pensize()
- # draw lines
- tommy.penup()
- tommy.goto(-, -)
- tommy.color("yellow")
- tommy.pensize()
- tommy.pendown()
- tommy.goto(,-)
- tommy.penup()
- tommy.penup()
- tommy.goto(-, -)
- tommy.color("purple")
- tommy.pensize()
- tommy.pendown()
- tommy.goto(,-)
- tommy.penup()
- tommy.penup()
- tommy.goto(-, -)
- tommy.color("teal")
- tommy.pensize()
- tommy.pendown()
- tommy.goto(,-)
- tommy.penup()
- # draw cake
- tommy.goto(-,-) #这个是画蛋糕
- tommy.begin_fill()
- tommy.pendown()
- tommy.color("white")
- tommy.goto(,-)
- tommy.left()
- tommy.forward()
- tommy.left()
- tommy.forward()
- tommy.left()
- tommy.forward()
- tommy.end_fill()
- tommy.penup()
- tommy.goto(-,-) #这个是画蛋糕,到这个坐标去,这个是黄色那层
- tommy.begin_fill()
- tommy.pendown() #放下画笔
- tommy.color("yellow")
- tommy.goto(,-)
- tommy.left()
- #tommy.forward() #向前60码,这个是那个横线
- tommy.left()
- tommy.forward() #这个是一层的厚度
- tommy.left() #这个是根据角度来转方像
- tommy.forward()
- tommy.left() #这个是根据角度来转方像
- tommy.forward()
- tommy.end_fill()
- tommy.penup()
- tommy.goto(-,-) #这个是画蛋糕,到这个坐标去,这个是黄色那层
- tommy.begin_fill()
- tommy.pendown() #放下画笔
- tommy.color("#40E0D0")
- tommy.goto(,-)
- tommy.left()
- #tommy.forward() #向前60码,这个是那个横线
- tommy.left()
- tommy.forward() #这个是一层的厚度
- tommy.left() #这个是根据角度来转方像
- tommy.forward()
- tommy.left() #这个是根据角度来转方像
- tommy.forward()
- tommy.end_fill()
- tommy.penup()
- tommy.goto(-,-) #这个是画蛋糕,到这个坐标去,最下面那层
- tommy.begin_fill()
- tommy.pendown() #放下画笔
- tommy.color("#BA55D3")
- tommy.goto(,-)
- tommy.left()
- #tommy.forward() #向前60码,这个是那个横线
- tommy.left()
- tommy.forward() #这个是一层的厚度
- tommy.left() #这个是根据角度来转方像
- tommy.forward()
- tommy.left() #这个是根据角度来转方像
- tommy.forward()
- tommy.end_fill()
- tommy.penup()
- #draw candles
- tommy.goto(-, -)
- tommy.color("aquamarine")
- tommy.pendown()
- tommy.pensize()
- tommy.goto(-, -)
- tommy.penup()
- tommy.goto(-, -)
- tommy.color("yellow")
- tommy.pendown()
- tommy.pensize()
- tommy.goto(-, -)
- tommy.penup()
- tommy.goto(-, -)
- tommy.color("green")
- tommy.pendown()
- tommy.pensize()
- tommy.goto(-, -)
- tommy.penup()
- tommy.goto(, -)
- tommy.color("red")
- tommy.pendown()
- tommy.pensize()
- tommy.goto(, -)
- tommy.penup()
- tommy.goto(, -)
- tommy.color("blue")
- tommy.pendown()
- tommy.pensize()
- tommy.goto(, -)
- tommy.penup()
- tommy.goto(, -)
- tommy.color("#556B2F")
- tommy.pendown()
- tommy.pensize()
- tommy.goto(, -)
- tommy.penup()
- # print message
- bg.bgcolor("pink")
- def snow():
- tommy.hideturtle()
- tommy.speed()
- tommy.pensize()
- for i in range():
- r=random()
- g=random()
- b=random()
- tommy.pencolor(r,g,b)
- tommy.penup()
- tommy.setx(randint(-,))
- tommy.sety(randint(,))
- tommy.pendown()
- dens=randint(,)
- snowsize=randint(,)
- for j in range(dens):
- tommy.forward(snowsize)
- tommy.backward(snowsize)
- tommy.right(/dens)
- snow()
- tommy.goto(-, )
- tommy.color("orange")
- tommy.pendown()
- tommy.write( "漫天 。・゚・(ノД`)ヽ(゚Д゚ ) 烟花送给你~",font=('微软雅黑', , 'normal'))
- pygame.mixer.music.stop()
- file='media/sweet.mp3'
- #print("播放音乐1")
- track = pygame.mixer.music.load(file)
- pygame.mixer.music.play()
- time.sleep()
- tommy.penup()
- tommy.goto(-,-)
- tommy.write("祝你生日快乐哟,小寿星 ο(=•ω<=)p⌒☆!",font=('微软雅黑', , 'normal'))
- time.sleep()
- # send the turtle to the corner
- tommy.penup()
- tommy.goto(-, )
- #tommy.exitonclick()
- tommy.hideturtle()
- time.sleep()
- tommy.clear() #清空屏幕了,然后设置背景色为黑色,滚动演员表
- bg.bgcolor("white")
- tommy.penup()
- tommy.goto(-, )
- tommy.color("black")
- tommy.pendown()
- tommy.write(" …(⊙_⊙;)…天呐!是不是很好看呀?坚持看到了这里",font=('微软雅黑', , 'normal'))
- tommy.penup()
- tommy.goto(-, )
- tommy.write(" (〃` 3′〃)那好咯,后面还有一点点结尾!",font=('微软雅黑', , 'normal'))
- tommy.penup()
- time.sleep()
- tommy.goto(-, )
- tommy.clear()
- tommy.write("(python友情支持)就是我啦 ┑( ̄Д  ̄)┍ ",font=('微软雅黑', , 'normal'))
- time.sleep()
- # tommy.clear()
- # tommy.write("音乐 、后期、导演、声优、编辑、构思 ",font=('微软雅黑', , 'normal'))
- # time.sleep()
- #
- # tommy.clear()
- # tommy.write("♂ 是你那不善言辞的大猪蹄子男票 ",font=('微软雅黑', , 'normal'))
- # time.sleep()
- #
- tommy.clear()
- tommy.write("(◍•ᴗ•◍)ゝ特用此小程序祝你生日快乐~ ",font=('微软雅黑', , 'normal'))
- time.sleep()
- tommy.clear()
- tommy.write("( ◜◡‾) 天天开心~ ☻ ",font=('微软雅黑', , 'normal'))
- time.sleep()
- tommy.clear()
- tommy.write("最后biu 一个小心心给你把~",font=('微软雅黑', , 'normal'))
- time.sleep()
- #这儿最后画一个小心心,
- tommy.clear()
- #coding=utf-
- #画一个圆的东西出来
- import turtle
- #turtle = tommy
- turtle.speed()
- turtle.pensize()#:设置画笔的宽度;
- turtle.left()
- turtle.circle(,) #半径大小
- #画眼睛
- turtle.right()
- turtle.forward()
- turtle.left()
- turtle.forward()
- turtle.right()
- turtle.forward()
- turtle.penup()
- turtle.goto(-,)
- #画眼睛了
- turtle.begin_fill()
- turtle.color("black")
- turtle.circle()
- turtle.end_fill()
- turtle.penup()
- turtle.goto(-,)
- #画眼睛了
- turtle.begin_fill()
- turtle.color("black")
- turtle.circle()
- turtle.end_fill()
- turtle.penup()
- turtle.goto(,)
- #画眼睛了
- turtle.begin_fill()
- turtle.color("red")
- turtle.circle()
- turtle.end_fill()
- turtle.penup()
- turtle.goto(-,)
- #画眼睛了
- turtle.begin_fill()
- turtle.color("red")
- turtle.circle()
- turtle.end_fill()
- turtle.penup()
- turtle.goto(-,)
- #画眼睛了
- # turtle.begin_fill()
- turtle.pendown()
- turtle.color("black")
- turtle.left()
- turtle.circle(,)
- # turtle.end_fill()
- #画另一只手
- turtle.penup()
- turtle.color("black")
- turtle.goto(,)
- turtle.right()
- turtle.pendown()
- turtle.forward()
- turtle.left()
- turtle.forward()
- turtle.right()
- turtle.forward()
- turtle.left()
- turtle.forward()
- turtle.right()
- turtle.forward()
- turtle.left()
- turtle.forward()
- turtle.right()
- turtle.forward()
- turtle.right()
- turtle.forward()
- turtle.left()
- turtle.forward()
- turtle.left()
- turtle.forward()
- turtle.left()
- turtle.forward()
- #爱心
- # turtle.begin_fill()
- turtle.penup()
- turtle.color("red")
- turtle.right()
- turtle.goto(,)
- turtle.pendown()
- turtle.circle(,)
- turtle.forward()
- turtle.left()
- turtle.forward()
- turtle.penup()
- turtle.color("red")
- turtle.right()
- turtle.goto(,)
- turtle.pendown()
- turtle.circle(-,)
- turtle.forward()
- turtle.right()
- turtle.forward()
- # turtle.end_fill()
- turtle.penup()
- turtle.goto(,)
- turtle.pendown()
- # turtle.right()
- turtle.forward()
- turtle.left()
- turtle.forward()
- turtle.right()
- turtle.forward()
- turtle.goto(,)
- turtle.penup()
- turtle.goto(-,-)
- turtle.write("The end",font=("微软雅黑",,"normal"))
- time.sleep()
- done() #可以使窗口保持
- pygame.mixer.music.stop()
理解完成之后想要在自己的笔记上面跑起来:结果出了好几个小小的问题
问题1:我安装是Python3.6.3的版本,但是直接运行程序的话提示没有pygame 模块,所以自己就在自己Pycharm中进行下载,但是搜索都搜索不到,所以就到cmd中去利用pip命令去安装了
pip命令去安装:
下载地址:https://pypi.org/
搜索pygame,转到pygame1.9.6之后点击pygame1.9.6,然后转到另一个界面
转到下面的界面,之后选择cp36的下载即可,因为自己安装的python是64位的,所以下载了最后一个pygame-1.9.6-cp36-cp36m-win_amd64.whl
由于自己的之后黑窗口安装
打开cmd命令窗口,通过“pip install"命令安装pygame安装包。当然的pip命令最好是在whl文件所在的目录下面,这样的话可以输入几个开头字母之后自动补全
- pip install pygame-1.9.6-cp36-cp36m-win_amd64.whl
检测是否安装成功,在cmd命令窗口下,输入”python“,进入python交互命令窗口,输入”import pygame“,如果运行成功,表示安装成功。
之后运行成功
最后想要到别的电脑上也能够运行,所以就想将程序打成exe可执行程序
接下来说干就干
大家都知道,Python是一种脚本语言,也就是解释型的语言,需要解释器来进行解释以后才可以执行,而Python源代码需要在Python虚拟机上面运行,但是我们做好的程序,不可能给用户使用的时候还让他安装一个Python环境,所以今天我们讲解如何将Python程序打包为exe可执行文件。
提示: 以下的教程都是再有Python环境的基础上的,如果没有安装,请先参考:Python安装以及环境变量配置
一、安装pyinsatller
打开命令行窗口,输入如下指令
pip3 install pyinstaller
然后静待pyinstaller自动安装好
但是自己在安装pyinstaller的过程中出现了问题
问题解决加上参数 --no-use-pep517
- pip3 install pyinstaller --no-use-pep517
成功的安装了 输入pyinstaller --version去验证是否成功,显示版本也就是成功了
如果还未解决的话,可以继续的参考链接解决哦 https://blog.csdn.net/qq_26561157/article/details/89812450
二、使用pyinstaller打包Python程序(参考链接https://blog.csdn.net/qq_33462307/article/details/90479045)
①在你的Python程序文件夹上(不点进去)按住shift并且右键,在弹出的选项中点击"在此处打开命令行窗口"或者“在此处打开PowerShell窗口”
在上面的目录下按住shift 之后右键选择打开powershell
下面的是自己的界面:
>>>或者先进入命令行窗口,然后使用cd指令进入程序文件夹,示例:
cd E:\课件\python数据分析与数据挖掘\数据挖掘方法及应用\Python数据挖掘\程序\Gp201820192\BigData\BirthdayFinal
②输入以下指令,开始打包
pyinstaller -F -w (-i icofile) filename
filename表示你的Python程序文件名
-w 表示隐藏程序运行时的命令行窗口(不加-w会有黑色窗口)
括号内的为可选参数,-i icofile表示给程序加上图标,图标必须为.ico格式 icofile表示图标的位置,建议直接放在程序文件夹里面,这样子打包的时候直接写文件名就好
具体的将文件改为.ico格式的工具网站 http://www.bitbug.net/
接着 pyinstaller -F -w (-i icofile) filename 命令输入完成,按回车,就会开始自动打包了,第一次打包过程可能比较缓慢
输入示例:
pyinstaller -F -w -i birth.ico Birthday.py
(pyinstaller中的各个参数的含义:https://blog.csdn.net/weixin_39000819/article/details/80942423)
打成exe成果的效果
然后我们进入到程序目录里面会再看到一个名称为dist目录,打包好的exe程序就在里面
注意:如果原本的程序中使用到了相应的资源,需要复制到dist目录下,否则程序会无法运行
比如我这里在程序中使用到了好多的音频,所以就需要将该文件放到dist目录下,我这里是在dist目录下新建了一个目录:media,把那些文件放了进去
形成exe目录在之后的结构
最后进入到自己的dist目录下,点击exe程序即可启动程序,具体的程序效果可见链接 https://www.bilibili.com/video/av53114885
如果点击exe程序,出现错误弹出框
Pygame使用pyinstaller打包exe无法运行,显示 failed to execute script的问题
原因剖析
pygame需要的资源如图片音乐等pyinstaller是不会给你打包的,需手动加入
本来自己用pyinstaller 形成的dist命令是没有依赖的那些mp3和图片等文件的,自己需要去加入到和exe一样的dist目录下,如果不加入的话会提示 failed to execute script
python生日贺卡制作以及细节问题的解决最后把python项目发布为exe可执行程序过程的更多相关文章
- 【5号课堂】scratch制作电子生日贺卡
贺卡在我国的使用由来已久,在古代,上层士大夫有用名帖互相问候的习俗 唐宋以后,贺卡的名称及功能有所进步,称为”门状“或“飞帖“,到了明清,又叫“红单“.“贺年帖“等等,听着名字就知功能越来越世俗化,文 ...
- 实战微信JS SDK开发:贺卡制作与播放(2)
最近同事用CanTK开发了一个基于微信的贺卡制作APP,我虽然没有参与开发,但是提供CanTK和GameBuilder的技术支持,觉得有些东西比较有意思,写几篇博客和大家分享吧.这个贺卡APP完全开源 ...
- 实战微信JS SDK开发:贺卡制作与播放(1)
前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细 ...
- python socket编程制作后门木马(原创)
不知道为啥,懒得解释怎么写出来的,直接上代码,爱看不看 Client: 简单连接服务器 #!/usr/bin/python #coding:utf-8 import socket import sy ...
- 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)
目录 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) 翻译软件上传到github上. 软件截图 主要的思想 界面方面 程序方面 制作属于自己的翻译软件(基于PyQt5+Python+ ...
- 手摸手教你如何在 Python 编码中做到小细节大优化
手摸手教你如何在 Python 编码中做到小细节大优化 在列表里计数 """ 在列表里计数,使用 Python 原生函数计数要快很多,所以尽量使用原生函数来计算. &qu ...
- pyinstaller使用-python项目转换成exe可执行文件
http://blog.csdn.net/pipisorry/article/details/50620122 Python不是每个人的计算机里面都有安装,当您写了一个好用的工具,需要一个standa ...
- Python学习教程(十)精选 TOP45 值得学习的Python项目
精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...
- <小白学技术>将python脚本导出为exe可执行程序
1.简介(为啥需要导出为exe可执行程序) python写完的程序靠命令来执行,显得太专业,不符合python简单的特点(好吧,主要是太low) 代码给别人执行,别人没有你的python库也没法用(双 ...
随机推荐
- webpack4.0 ---引用vue文件
一.引入Vue 1.安装依赖环境 npm i vue-loader -D;//解析转化.vue文件,npm i vue-style-loader -D npm i vue-template-compi ...
- Iptables和Firewall-selinux
一.Iptables防火墙 ---------- **三表五链:**三表: filter过滤表 nat转换表 mangle表五链: PREROUTING--->在进行路由选择前处理数据包 INP ...
- No
1.为什么A/D转换前需要采样保持电路,它的基本原理是什么? 因为被取样的信号是动态,随时改变的,而A/D转换需要时间,在这个转换的过程中,信号是变化的,为了弥补A/D转换的时间差,所以需要采样保持. ...
- POJ_2941_矩阵
题目描述: 每组数据给定一个n*n的矩阵,选定不同行不同列的n个元素,求和,若所有选法所产生的和相等,则输出 homogeneous,否则输出not homogeneous. 描述: 数据挺大,爆搜肯 ...
- Codeforces 1050D Three Religions (dp+序列自动机)
题意: 给一个1e5的串str,然后有三个起始空串,不超过1000次操作,对三个字符串的一个尾部加一个字符或者减一个字符,保证每个字符不会超过250 每次操作之后询问你这三个串是不是可以组成str的子 ...
- BZOJ 1025 [SCOI2009]游戏 (DP+分解质因子)
题意: 若$a_1+a_2+\cdots+a_h=n$(任意h<=n),求$lcm(a_i)$的种类数 思路: 设$lcm(a_i)=x$, 由唯一分解定理,$x=p_1^{m_1}+p_2^{ ...
- 基于CentOS-7 部署open
一.OpenVPN概述 OpenVPN是一个用于创建专用网络加密通道的源软件.可在公司和家庭之间.部署类似于局域网的专用网络通道 而且OpenVPN使用起来也非常方便.几乎可以运行在任何平台.同时也采 ...
- Property - 特性(Python)
Property - Python 特性 不同的书籍对 property 一词的翻译有所不同, 我们将 property 翻译成 '特性' 以区别于 attribute 一词. 先看看 propert ...
- Maven项目pom文件的节点释意
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- XLNet:运行机制及和Bert的异同比较
这两天,XLNet貌似也引起了NLP圈的极大关注,从实验数据看,在某些场景下,确实XLNet相对Bert有很大幅度的提升.就像我们之前说的,感觉Bert打开两阶段模式的魔法盒开关后,在这条路上,会有越 ...