自己今天第一次做一个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可执行程序过程的更多相关文章

  1. 【5号课堂】scratch制作电子生日贺卡

    贺卡在我国的使用由来已久,在古代,上层士大夫有用名帖互相问候的习俗 唐宋以后,贺卡的名称及功能有所进步,称为”门状“或“飞帖“,到了明清,又叫“红单“.“贺年帖“等等,听着名字就知功能越来越世俗化,文 ...

  2. 实战微信JS SDK开发:贺卡制作与播放(2)

    最近同事用CanTK开发了一个基于微信的贺卡制作APP,我虽然没有参与开发,但是提供CanTK和GameBuilder的技术支持,觉得有些东西比较有意思,写几篇博客和大家分享吧.这个贺卡APP完全开源 ...

  3. 实战微信JS SDK开发:贺卡制作与播放(1)

    前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细 ...

  4. python socket编程制作后门木马(原创)

    不知道为啥,懒得解释怎么写出来的,直接上代码,爱看不看 Client:  简单连接服务器 #!/usr/bin/python #coding:utf-8 import socket import sy ...

  5. 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)

    目录 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) 翻译软件上传到github上. 软件截图 主要的思想 界面方面 程序方面 制作属于自己的翻译软件(基于PyQt5+Python+ ...

  6. 手摸手教你如何在 Python 编码中做到小细节大优化

    手摸手教你如何在 Python 编码中做到小细节大优化 在列表里计数 """ 在列表里计数,使用 Python 原生函数计数要快很多,所以尽量使用原生函数来计算. &qu ...

  7. pyinstaller使用-python项目转换成exe可执行文件

    http://blog.csdn.net/pipisorry/article/details/50620122 Python不是每个人的计算机里面都有安装,当您写了一个好用的工具,需要一个standa ...

  8. Python学习教程(十)精选 TOP45 值得学习的Python项目

    精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...

  9. <小白学技术>将python脚本导出为exe可执行程序

    1.简介(为啥需要导出为exe可执行程序) python写完的程序靠命令来执行,显得太专业,不符合python简单的特点(好吧,主要是太low) 代码给别人执行,别人没有你的python库也没法用(双 ...

随机推荐

  1. Python学习,第八课 - 函数

    本次讲解函数,由于内容比较多,小编列了个大纲,主要有一下内容: 1. 函数基本语法及特性 2. 函数参数 3.局部变量 4. 返回值 5.嵌套函数 6.递归 7.匿名函数 8.高阶函数 9.内置函数 ...

  2. pycharm 选中单列快捷键

    直接键入 Alt + Shift +Insert 一次后就可以选中单列 再次键入就改回选中整行 如图: 第一键入 第二次键入

  3. 用Java实现一个简单的DBMS(总结)

    时间:2020/1/16 写这个DBMS(说DBMS夸张了,应该是一个控制台程序)的起因是数据库实践老师布置的一个大作业,先贴上GitHub地址: https://github.com/machi12 ...

  4. react脚手架搭建命令 react常用库

    react项目一般需要的组件库     react-redux     状态管理库     react-router-dom    路由     sass /less     style-compon ...

  5. 今天你上班了吗?来聊聊一个隐蔽了 5 年的BUG!

    前言 今天,我们要揭晓一个 FineUI 隐藏最深的一个BUG,这个问题从 2014-07-30 发布 FineUIPro v1.0.0 就一直存在,直到最新于 2020-01-10 发布的 v6.1 ...

  6. java设计模式5——适配器模式

    java设计模式5--适配器模式 1.结构型模式介绍 1.1.作用 从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题. 分类: 适配器模式 代理模式 桥接模式 装饰模式 组合模式 ...

  7. Kafka常用topic操作命令汇总

    offset topic consumer-group consumer producer producer-golang topic 工具 https://cwiki.apache.org/conf ...

  8. CCF_ 201509-2_日期计算

    水. #include<iostream> #include<cstdio> using namespace std; ] = {{,,,,,,,,,,,,},{,,,,,,, ...

  9. Codeforces 977D Divide by three, multiply by two(拓扑排序)

      Polycarp likes to play with numbers. He takes some integer number xx, writes it down on the board, ...

  10. (四)mybatis逆向工程

    构建 逆向工程就是说通过数据库当中的表生成class,mapper,接口,不需要自己编写那些,很方便.跟symfony里面的自动生成是一样的:视频里的人说用的不多,但我觉得很方便呀 具体步骤,首先导入 ...