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库也没法用(双 ...
随机推荐
- jsp路径
访问静态资源的时候${pageContext.request.Context}没有作用,在浏览器F12调试的时候发现,路径并没有被解释为项目的根路径,而是没有解释出来,还是${pageContext. ...
- 在Anaconda3下安装(CPU版)TensorFlow(清华镜像源)
1.打开Anaconda Prompt 2.搭建TensorFlow的环境: conda config --add channels https://mirrors.tuna.tsinghua.edu ...
- 使用Gradle自动创建Java项目结构
D:\N3verL4nd\Desktop\java>tree 卷 本地磁盘 的文件夹 PATH 列表 卷序列号为 00000200 0006:08B0 D:. ├─.gradle │ ├─3.4 ...
- 计蒜客A1998 Ka Chang (分块+dfs序+树状数组)
题意 给你一个\(1e5\)的有点权的树,有\(1e5\)个操作: 1.给第\(x\)层的点加上\(y\) 2.求以\(x\)为根的子树的点权和 思路 首先处理出层数为x的所有点 操作2一般都是用df ...
- gulp 压缩文件2 摘
一下代码用来简单的压缩 .js 和 .css ; 在cmd里执行 gulp minifycss minifyjs,各task执行是正常的. 注意,先安装后相应的模块,建议安装到本地. 说 ...
- Java程序员必备英文单词
列表中共有769个单词,这些单词是从JDK.Spring.SpringBoot.Mybatis的源码中解析得到,按照在源码中出现的频次依次排列,页面中的单词是出现频次大于1000的.单词的音标.翻译结 ...
- bin utilities related
objdump -S,如果有源程序的话,将源程序与汇编代码混合在一起. 使用该选项时,输入的目标文件需要有调试信息,即用gcc -g生成的目标文件才可以,因为,调试信息中采用源程序信息. objcop ...
- lwip stats
lwip统计量分两种,一种是lwip自己的,一种是snmp的. 直接用snmp的 /* ----------------------------------- ---------- Statistic ...
- CentOS 7的yum更换为国内的阿里云yum源
Yellow dog Updater(Yum)是CentOS所有版本的默认包管理器,yum主要功能是更方便的添加/删除/更新RPM包,自动解决包的依赖性问题,便于管理大量系统的更新问题,其理念是使用一 ...
- jq根据table的tr行数动态删除相应的行
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...