“ 过分了,别人用来做桌面应用开发,这家伙却用来撩妹(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加一,下一次就会取第二张图片,依次反复。
总结
本篇文章主要灵活使用画布功能以及画布图片创建的应用,帮助大家更好的了解画布功能。