过分了,别人用来做桌面应用开发,这家伙却用来撩妹(4)--运动的火柴人

2021-07-30 14:55:52 浏览数 (4)

过分了,别人用来做桌面应用开发,这家伙却用来撩妹(4)--运动的火柴人

我算是知道了,这个tkinter是真的好玩,还非常有趣,希望大家都可以去了解一下。

哈哈,先看成品,再决定是否有学习的兴趣。

目录

系列文章

前言

原理解析

需求说明

材料图片

第一步:实现一个弹框

第二步:插入图片

第三步:实现图片轮播

总结


系列文章

1、(tkinter)撩妹弹窗(3)之不要越过三八线,canvas的使用方法

2、过分了,别人用来做桌面应用开发,这家伙却用来撩妹(2)-上帝给你开了各种撩妹窗口(Tkinter)

3、过分了,别人用来做桌面应用开发,这家伙却用来撩妹(1)--上帝给你开一个窗口(Tkinter)—tkinter常用函数解析

前言

从图中大家就可以看出来,这次我们要制作的东西,非常好玩有没有,这就是编程的魅力,能实现我们想要的东西。当然了,这只是皮毛而已。

上图中的需求实现总的只有20多行代码,对于新手来说还是比较容易上手的。当然老手那就更不用说了。

原理解析

博主其实也是一位动漫粉,俄而也会看看动漫,还是觉得很有意思的,感觉超酷的,比如我看的一部《刺客伍六七》,不知道大家有没有看过,咳咳咳,有点跑偏了……

首先我们梳理一下动漫是如何形成的。

你可以这样理解,假如把你的每一个动作分解开来,都做成为一张照片,那我们就会得到很多张连续的照片。反过来,我们把所有连贯的照片依次展示出来,是不是就是你的一个完整动作。

那当我们把火柴人的跑步动作分解为图片,然后再将图片依次播放,是不是就是得到了一个移动的火柴人。理论存在,实践开始。

需求说明

虽然已经有图了,但我们还是来说明一下我们的需求,方便大家理解。

1、我有一组连贯的火柴人图片。

2、把这些图片组合在一起,形成一个会动的火柴人

3、移动窗口,火柴人就会运动,停止窗口,火柴人就会停止。

材料图片

顺序为,当然,你也可以用其他图片代替哦。

123

456

789

第一步:实现一个弹框

首先,先来实现一个弹框。

代码语言:javascript复制
代码语言:javascript复制
import tkinter
from tkinter import *
tk=tkinter.Tk()

def window():
    tk.title("窗口")  # 设置窗口名称
    tk.geometry("300x300 500 300")
    tk.iconbitmap('favicon.ico')
    tk["background"] = "#7AC5CD"
    # tk.attributes("-toolwindow", True)#隐藏顶部工具栏之后,icon不会显示
    tk.mainloop()

if __name__ == '__main__':
    window()
代码语言:javascript复制

第二步:插入图片

代码如下:

代码语言:javascript复制
代码语言:javascript复制
import tkinter, time
from tkinter import *
tk = tkinter.Tk()
tk.title("窗口")  # 设置窗口名称
tk.geometry("200x220 200 220")
w = tk.winfo_screenwidth()  # 获取屏幕宽
h = tk.winfo_screenheight()  # 获取屏幕高
cn = Canvas(tk, height=h, width=w, bg="white")  # bg="pink"
photo=PhotoImage(file="robot.PNG")

def update_test(e):
    cn.delete(tkinter.ALL)
    tk.update()
    cn.create_image(100, 100, image=photo)
    cn.pack()

tk.bind("<Configure>", update_test)
tk.mainloop()
代码语言:javascript复制

第三步:实现图片轮播

代码如下:

代码语言:javascript复制
代码语言:javascript复制
import tkinter,time
from tkinter import *

tk = tkinter.Tk()
tk.title("窗口")  # 设置窗口名称
tk.geometry("200x220 200 220")
w = tk.winfo_screenwidth()  # 获取屏幕宽
h = tk.winfo_screenheight()  # 获取屏幕高
cn = Canvas(tk, height=h, width=w, bg="white")  # bg="pink"
list,a=[],1
for i in range(1,10):
    list.append(PhotoImage(file="robot_"   str(i)   ".PNG"))#图片列表

def update_test(e):
    cn.delete(tkinter.ALL)
    tk.update()
    global a#设置全局变量
    for i in range(1,10):
        if a==9:
            a=1
            cn.create_image(100,100, image=list[0])
        else:
            cn.create_image(100,100, image=list[a])
            a =1
        break
    cn.pack()
tk.bind("<Configure>", update_test)
tk.mainloop()

这里有两个特别注意的点,变量list,和a,list为图片列表。a为全局变量,控制图片轮播。

思路:当窗口移动,窗口改变事件启动,如果a等于9的时候,就重新计算a的值,并创建图片,如果不创建图片,可能就是空白的哦,其他情况就先取列表数据,创建图片,然后再将a加一,下一次就会取第二张图片,依次反复。

总结

本篇文章主要灵活使用画布功能以及画布图片创建的应用,帮助大家更好的了解画布功能。

0 人点赞