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

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

大家好,又见面了,我是全栈君。

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

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

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

目录

系列文章

前言​

原理解析

需求说明

材料图片

第一步:实现一个弹框

 第二步:插入图片

 第三步:实现图片轮播

总结


系列文章

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

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

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

前言​

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

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

原理解析

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

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

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

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

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

需求说明

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

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

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

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

材料图片

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

123

456

789

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

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

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

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

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

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

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

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

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

第一步:实现一个弹框

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

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

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()

 第二步:插入图片

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

代码如下:

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()

 第三步:实现图片轮播

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

 代码如下:

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加一,下一次就会取第二张图片,依次反复。

总结

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

扩展:在上面这个基础上,当我们换上女朋友或者自己老婆和一些图片,是不是也一样可以用起来。

相关文章:

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111353.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 6.5——ADRC学习

    6.5——ADRC学习深刻理解PID1.    典型的传递函数——一阶惯性环节一个储能元件(如电感,电容)与一个耗能元件(如电阻)的组合,就能构成一阶惯性环节。如一个RC电路特点:当输入量发生突变时,输出量不能突变,只能按照指数规律逐渐变换,这就反应了该环节具有惯性。(也就是说,惯性环节的输出一开始并不与输入同步按比例变化,直到过渡过程结束,y(t)才能与x(t)保持比例。)而惯性环节的时间常数就是惯性的量度。 我们的…

    2022年5月19日
    37
  • QMap容器小知识

    QMap容器小知识1便捷的遍历方法示例QMap&lt;QString,int&gt;map;…foreach(intvalue,map)cout&lt;&lt;value&lt;&lt;endl;2判断是否包含某个字段接口boolcontains(constKey&amp;key)const3获取指定字段的值,没有则给与默认值接口co…

    2022年5月30日
    40
  • 八种方式实现跨域请求

    八种方式实现跨域请求前端开发中我们经常会遇到跨域请求的情况,处理跨域请求方式很多,特整理如下:浏览器的同源策略​提到跨域不能不先说一下”同源策略”。​何为同源?只有当协议、端口、和域名都相同的页面,则两个页面具有相同的源。只要网站的协议名protocol、主机host、端口号port这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域调用,会受到同源策略的限制。​同源策略限制从

    2022年5月10日
    56
  • CURL

    CURL

    2021年7月31日
    57
  • 7款开源Java反编译工具

    7款开源Java反编译工具今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程。尤其是像.NET、Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。当然,也有一些商业软件,对其程序进行了混淆加密,这样我们就很难用工具反编译了。1、Java反编译插件——JadclipseJadClipse是J…

    2022年7月8日
    24
  • sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法「建议收藏」

    sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法「建议收藏」今天部署一个asp老项目,在用MSSQL数据库备份文件还原数据库时,发生了问题。提示:sql2008备份集中的数据库备份与现有的xxx数据库不同。百度找到了这篇文章:sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法但我和他重现问题的步骤不一样,他是以文件和文件组的方式还原出现了问题,而我是以数据库的方式还原出现了问题。换句话说,他的解决方案里的步骤就是我出错的步骤,如图:…

    2022年5月13日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号