“张万森,好久不见”(Python背景图)

点击蓝字

picture.image

关注我们

“张万森,好久不见”

前言

picture.image

WINTER IS COMING

picture.image

最近《一闪一闪亮星星》的电影在火热预售中,家人们抢到票了嘛,前两天小编写了一篇“张万森,下雪了”的文章后,收到了不少小伙伴的反馈:“代码的运行结果只有文字,没有雪花啊”,“可以加背景照片吗”等等。

picture.image

于是小编决定给大家写一篇可加 背景图片 的教程,以及代码运行过程中遇到问题的解决方案,一定要看到最后喔~

picture.image

绘图函数

picture.image

WINTER IS COMING

既然要学习绘图,当然要先认识一下绘图函数啦

picture.image

Turtle是Python标准库中一个非常有趣和强大的绘图工具,它可以让我们通过编写Python代码来控制一个图形化窗口中的小海龟来绘制各种图形,例如线条、填充图形、文字等。下面是一些Turtle中常用的入门函数:

picture.image

  1. turtle.forward(distance): 向前移动distance距离单位长度,可以是正数或负数,正数为向前,负数为向后。

  2. turtle.backward(distance): 向后移动distance距离单位长度,可以是正数或负数,正数为向后,负数为向前。

  3. turtle.right(angle): 向右旋转angle度,可以是正数或负数。

  4. turtle.left(angle): 向左旋转angle度,可以是正数或负数。

  5. turtle.penup(): 抬起画笔,不会再绘制图形。

  6. turtle.pendown(): 落下画笔,继续绘制图形。

  7. turtle.pensize(width): 设置画笔的宽度。

  8. turtle.pencolor(color): 设置画笔的颜色,可以是颜色名称或RGB值。

  9. turtle.fillcolor(color): 设置填充颜色,可以是颜色名称或RGB值。

  10. turtle.begin_fill(): 开始绘制填充图形。

  11. turtle.end_fill(): 结束绘制填充图形。

  12. turtle.circle(radius, extent=None): 绘制一个半径为radius的圆形,extent可以指定圆弧的角度。

  13. turtle.dot(size=None, color=None): 绘制一个指定大小和颜色的点。

  14. turtle.write(text, font=None,, move=False): 在窗口中写入text,可以指定字体、对齐方式、是否移动海龟。

  15. turtle.clear(): 清空窗口中的所有图形。

picture.image

以上是一些Turtle中常用的入门函数,它们可以组合使用来实现各种图形的绘制,让我们能够快速、简单地学习和使用Turtle。

picture.image

准备开始

picture.image

WINTER IS COMING

picture.image

环境搭建/安装软件

picture.image

picture.image

环境:Python3.12+PyCharm

【注】需要python3.12以上的版本哦,旧版的python可能因为版本问题会出现只有文字没有雪花的效果(需要安装包可以在公众号回复python领取哦)

具体安装教程看下面两篇文章即可

关于运行Python代码的方法以及遇到问题的解决方案(计算机小白篇)

如何下载安装PyCharm并搭建Python开发环境

picture.image

完整代码

picture.image

picture.image

下面是程序的完整代码,复制黏贴到PyCharm时,需要注意缩进哦(解决缩进问题:在PyCharm中同时按住“ctrl+A”选中全部代码,然后再同时按住“ctrl+alt+L”一键格式化代码)


            
import turtle as tu
            
import random as ra
            
import time
            
tu.setup(0.88, 0.84, None, 22)
            
tu.bgcolor('black')  # 设置画布颜色
            
tu.title("林北星")
            
tu.bgpic('林北星.png')
            
t = tu.Pen()
            
t.ht()  # 隐藏画笔
            
colors = ['white']  # 雪花的颜色列表
            
class Snow():  # 雪花类
            
    def __init__(self):
            
        self.r = ra.uniform(1, 3)  # 雪花的半径
            
        self.x = ra.randint(-1000, 1000)  # 雪花的横坐标
            
        self.y = ra.randint(500, 1000)  # 雪花的纵坐标
            
        self.speed = ra.randint(15, 99)  # 雪花移动速度
            
        self.color = ra.choice(colors)  # 雪花的颜色
            
        self.outline = 2  # 雪花的大小
            
    # 第一种雪花
            
    # def snow(self):
            
    #     t.pensize(self.outline)    #雪花的大小
            
    #     t.penup()                  #提笔
            
    #     t.goto(self.x,self.y)      #随机位置
            
    #     t.pendown()                #落笔
            
    #     t.color(self.color)        #雪花颜色
            
    #     t.begin_fill()
            
    #     t.fillcolor("white")
            
    #     t.circle(self.r)
            
    #     t.end_fill()
            
    # 第二种雪花
            
    def snow(self):  # 画每个雪花
            
        x = self.r  # 雪花的半径
            
        t.pensize(self.outline)  # 雪花的大小
            
        t.penup()  # 提笔
            
        t.goto(self.x, self.y)  # 随机位置
            
        t.pendown()  # 落笔
            
        t.color(self.color)  # 雪花颜色
            
        for i in range(6):  # 循环画六个雪花瓣
            
            t.forward(x * 5)
            
            t.backward(x * 2)
            
            t.left(60)
            
            t.forward(x * 2)
            
            t.backward(x * 2)
            
            t.right(120)
            
            t.forward(x * 2)
            
            t.backward(x * 2)
            
            t.left(60)
            
            t.backward(x * 3)
            
            t.right(60)
            
    def move(self):  # 雪花移动函数
            
        if self.y >= -500:  # 当雪花还在画布中时
            
            self.y -= self.speed  # 设置上下移动速度
            
        else:  # 当雪花漂出了画布时,重新生成一个雪花
            
            self.r = ra.uniform(1, 3)
            
            self.x = ra.randint(-1000, 1000)
            
            self.y = 500
            
            self.speed = ra.randint(15, 99)
            
            self.color = ra.choice(colors)
            
            self.outline = 2
            
Snows = []  # 用列表保存所有雪花
            
for i in range(595):
            
    Snows.append(Snow())
            
# t.penup()
            
# t.goto(0, -255)
            
# t.pendown()
            
# t.pencolor("white")
            
# t.write("张万森",, font=("Comic Sans MS", 33, "bold"))
            
#
            
# time.sleep(1)
            
#
            
# t.clear()
            
#
            
# time.sleep(1)
            
#
            
# t.write("下雪了",, font=("Comic Sans MS", 33, "bold"))
            
#
            
# time.sleep(1)
            
#
            
# t.clear()
            
#
            
# time.sleep(2)
            
while True:  # 开始绘制
            
    tu.tracer(0)
            
    t.clear()
            
    t.penup()
            
    t.goto(0, -255)
            
    t.pendown()
            
    t.write("我 好 想 你", align="center", font=("Comic Sans MS", 33, "bold"))
            
    for i in range(199):  # 199个漂浮的雪花
            
        Snows[i].move()
            
        Snows[i].snow()
            
    tu.update()
            
tu.mainloop()
        

picture.image

加入背景

picture.image

代码复制黏贴后,我们注意代码的第8行哦,这里是我们要加入的背景图

picture.image

小编用的是下面这张图哦

picture.image

我们需要把想当背景的照片的名字记录一下,然后拖进PyCharm的左上角,注意这里要拖到红色框圈出来的文件上

picture.image

然后会出现下面的界面,点击“重构”(或“确定”)即可

picture.image

图片移动成功后的图片如下

picture.image

这里的“林北星.png”就是我们刚才代码里第8行里的“林北星.png”,如果你是其他的名称,两边需要同时修改哦

picture.image

运行程

picture.image

点击右上角的小三角即可运行程序哦

picture.image

运行结果如下

picture.image

两种雪花

picture.image

WINTER IS COMING

picture.image

第一种雪花

LIGHT SNOW TODAY

picture.image


            
import turtle as tu
            
import random as ra
            
import time
            
tu.setup(0.88, 0.84, None, 22)
            
tu.bgcolor('black')  # 设置画布颜色
            
tu.title("林北星")
            
tu.bgpic('林北星.png')
            
t = tu.Pen()
            
t.ht()  # 隐藏画笔
            
colors = ['white']  # 雪花的颜色列表
            
class Snow():  # 雪花类
            
    def __init__(self):
            
        self.r = ra.uniform(1, 3)  # 雪花的半径
            
        self.x = ra.randint(-1000, 1000)  # 雪花的横坐标
            
        self.y = ra.randint(500, 1000)  # 雪花的纵坐标
            
        self.speed = ra.randint(15, 99)  # 雪花移动速度
            
        self.color = ra.choice(colors)  # 雪花的颜色
            
        self.outline = 2  # 雪花的大小
            
    # 第一种雪花
            
    def snow(self):
            
        t.pensize(self.outline)    #雪花的大小
            
        t.penup()                  #提笔
            
        t.goto(self.x,self.y)      #随机位置
            
        t.pendown()                #落笔
            
        t.color(self.color)        #雪花颜色
            
        t.begin_fill()
            
        t.fillcolor("white")
            
        t.circle(self.r)
            
        t.end_fill()
            
    # 第二种雪花
            
    # def snow(self):  # 画每个雪花
            
    #     x = self.r  # 雪花的半径
            
    #     t.pensize(self.outline)  # 雪花的大小
            
    #     t.penup()  # 提笔
            
    #     t.goto(self.x, self.y)  # 随机位置
            
    #     t.pendown()  # 落笔
            
    #     t.color(self.color)  # 雪花颜色
            
    #     for i in range(6):  # 循环画六个雪花瓣
            
    #         t.forward(x * 5)
            
    #         t.backward(x * 2)
            
    #         t.left(60)
            
    #         t.forward(x * 2)
            
    #         t.backward(x * 2)
            
    #         t.right(120)
            
    #         t.forward(x * 2)
            
    #         t.backward(x * 2)
            
    #         t.left(60)
            
    #         t.backward(x * 3)
            
    #         t.right(60)
            
    def move(self):  # 雪花移动函数
            
        if self.y >= -500:  # 当雪花还在画布中时
            
            self.y -= self.speed  # 设置上下移动速度
            
        else:  # 当雪花漂出了画布时,重新生成一个雪花
            
            self.r = ra.uniform(1, 3)
            
            self.x = ra.randint(-1000, 1000)
            
            self.y = 500
            
            self.speed = ra.randint(15, 99)
            
            self.color = ra.choice(colors)
            
            self.outline = 2
            
Snows = []  # 用列表保存所有雪花
            
for i in range(595):
            
    Snows.append(Snow())
            
# t.penup()
            
# t.goto(0, -255)
            
# t.pendown()
            
# t.pencolor("white")
            
# t.write("张万森",, font=("Comic Sans MS", 33, "bold"))
            
#
            
# time.sleep(1)
            
#
            
# t.clear()
            
#
            
# time.sleep(1)
            
#
            
# t.write("下雪了",, font=("Comic Sans MS", 33, "bold"))
            
#
            
# time.sleep(1)
            
#
            
# t.clear()
            
#
            
# time.sleep(2)
            
while True:  # 开始绘制
            
    tu.tracer(0)
            
    t.clear()
            
    t.penup()
            
    t.goto(0, -255)
            
    t.pendown()
            
    t.write("我 好 想 你", align="center", font=("Comic Sans MS", 33, "bold"))
            
    for i in range(199):  # 199个漂浮的雪花
            
        Snows[i].move()
            
        Snows[i].snow()
            
    tu.update()
            
tu.mainloop()
        

picture.image

第二种雪花

LIGHT SNOW TODAY

picture.image


            
import turtle as tu
            
import random as ra
            
import time
            
tu.setup(0.88, 0.84, None, 22)
            
tu.bgcolor('black')  # 设置画布颜色
            
tu.title("林北星")
            
tu.bgpic('林北星.png')
            
t = tu.Pen()
            
t.ht()  # 隐藏画笔
            
colors = ['white']  # 雪花的颜色列表
            
class Snow():  # 雪花类
            
    def __init__(self):
            
        self.r = ra.uniform(1, 3)  # 雪花的半径
            
        self.x = ra.randint(-1000, 1000)  # 雪花的横坐标
            
        self.y = ra.randint(500, 1000)  # 雪花的纵坐标
            
        self.speed = ra.randint(15, 99)  # 雪花移动速度
            
        self.color = ra.choice(colors)  # 雪花的颜色
            
        self.outline = 2  # 雪花的大小
            
    # 第一种雪花
            
    # def snow(self):
            
    #     t.pensize(self.outline)    #雪花的大小
            
    #     t.penup()                  #提笔
            
    #     t.goto(self.x,self.y)      #随机位置
            
    #     t.pendown()                #落笔
            
    #     t.color(self.color)        #雪花颜色
            
    #     t.begin_fill()
            
    #     t.fillcolor("white")
            
    #     t.circle(self.r)
            
    #     t.end_fill()
            
    # 第二种雪花
            
    def snow(self):  # 画每个雪花
            
        x = self.r  # 雪花的半径
            
        t.pensize(self.outline)  # 雪花的大小
            
        t.penup()  # 提笔
            
        t.goto(self.x, self.y)  # 随机位置
            
        t.pendown()  # 落笔
            
        t.color(self.color)  # 雪花颜色
            
        for i in range(6):  # 循环画六个雪花瓣
            
            t.forward(x * 5)
            
            t.backward(x * 2)
            
            t.left(60)
            
            t.forward(x * 2)
            
            t.backward(x * 2)
            
            t.right(120)
            
            t.forward(x * 2)
            
            t.backward(x * 2)
            
            t.left(60)
            
            t.backward(x * 3)
            
            t.right(60)
            
    def move(self):  # 雪花移动函数
            
        if self.y >= -500:  # 当雪花还在画布中时
            
            self.y -= self.speed  # 设置上下移动速度
            
        else:  # 当雪花漂出了画布时,重新生成一个雪花
            
            self.r = ra.uniform(1, 3)
            
            self.x = ra.randint(-1000, 1000)
            
            self.y = 500
            
            self.speed = ra.randint(15, 99)
            
            self.color = ra.choice(colors)
            
            self.outline = 2
            
Snows = []  # 用列表保存所有雪花
            
for i in range(595):
            
    Snows.append(Snow())
            
# t.penup()
            
# t.goto(0, -255)
            
# t.pendown()
            
# t.pencolor("white")
            
# t.write("张万森",, font=("Comic Sans MS", 33, "bold"))
            
#
            
# time.sleep(1)
            
#
            
# t.clear()
            
#
            
# time.sleep(1)
            
#
            
# t.write("下雪了",, font=("Comic Sans MS", 33, "bold"))
            
#
            
# time.sleep(1)
            
#
            
# t.clear()
            
#
            
# time.sleep(2)
            
while True:  # 开始绘制
            
    tu.tracer(0)
            
    t.clear()
            
    t.penup()
            
    t.goto(0, -255)
            
    t.pendown()
            
    t.write("我 好 想 你", align="center", font=("Comic Sans MS", 33, "bold"))
            
    for i in range(199):  # 199个漂浮的雪花
            
        Snows[i].move()
            
        Snows[i].snow()
            
    tu.update()
            
tu.mainloop()
        

问题解决

picture.image

WINTER IS COMING

只显示文字而不显示雪花的问题 :重新安装一下python3.12以上的版本哦(无脑安装很快滴,安装包在关注回复“python”领取哦)

解决缩进问题 :在PyCharm中同时按住“ctrl+A”选中全部代码,然后再同时按住“ctrl+alt+L”一键格式化代码

系列文章

picture.image

WINTER IS COMING

- 张万森,下雪了(Python)

- 陪你看一场冬雪(大雪纷飞Python版)

- 这棵python圣诞树有亿点好看(含圣诞祝福)

- 从天而降的Python圣诞礼物(可写字版)

- 一起用c语言模拟大雪纷飞的效果吧!

写在后面

picture.image

WINTER IS COMING

喜欢本文的小伙伴给小编点个赞吧!

0
0
0
0
评论
未登录
暂无评论