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

大家一起学编程(python) 大家一起学编程(python)     2022-12-04     277

关键词:

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

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

目录

系列文章

前言​

原理解析

需求说明

材料图片

第一步:实现一个弹框

 第二步:插入图片

 第三步:实现图片轮播

总结


系列文章

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

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

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

前言​

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

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

原理解析

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

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

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

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

需求说明

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

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

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

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

材料图片

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

123

456

789

第一步:实现一个弹框

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

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

 第二步:插入图片

代码如下:

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

 第三步:实现图片轮播

 代码如下:

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的使用方法

过分了,别人用来做桌面应用开发,这家伙却用来撩妹--双向奔赴的火柴人(代码片段)

目录一、运动的火柴人。二、跟随移动方向奔跑的火柴人三、自动移动的火柴人可还记得上期我们研究的会奔跑的机器人吗?没错,就是他,整个画面一闪一闪的,非常不好看。而且,只能单项奔跑,不能... 查看详情

过分了,别人用来做桌面应用开发,这家伙却用来撩妹--双向奔赴的火柴人(代码片段)

目录一、运动的火柴人。二、跟随移动方向奔跑的火柴人三、自动移动的火柴人可还记得上期我们研究的会奔跑的机器人吗?没错,就是他,整个画面一闪一闪的,非常不好看。而且,只能单项奔跑,不能... 查看详情

过分了,别人用来做桌面应用开发,这家伙却用来撩妹-不正经的隐形弹窗(代码片段)

前言在前面已经学习了很多,制作弹窗的方式,但是没有一个透明的弹窗。这次我们来做一个透明的弹窗好了。如图,先来感受一下。还记得以前电脑上莫名其妙安装的游戏吗?窗口并不是方形的。以及在双十一... 查看详情

过分了,别人用来做桌面应用开发,这家伙却用来撩妹-不正经的隐形弹窗(代码片段)

前言在前面已经学习了很多,制作弹窗的方式,但是没有一个透明的弹窗。这次我们来做一个透明的弹窗好了。如图,先来感受一下。还记得以前电脑上莫名其妙安装的游戏吗?窗口并不是方形的。以及在双十一... 查看详情

过分了,别人用来做桌面应用开发,这家伙却用来撩妹-不正经的隐形弹窗(代码片段)

前言在前面已经学习了很多,制作弹窗的方式,但是没有一个透明的弹窗。这次我们来做一个透明的弹窗好了。如图,先来感受一下。还记得以前电脑上莫名其妙安装的游戏吗?窗口并不是方形的。以及在双十一... 查看详情

arcgis有些啥软件,分别是干啥的

...领域是什么ArcGISDesktop9.3是桌面地理信息系统分析工具,用来做各做空间分析。ArcGISEngine9.3是组件GIS,可以用来开发一个地理信息系统,需要安装VS2005或2008。ArcGISServer9.3和Engine差不多,用来开发大型GIS项目。ArcGISSDE9.3建立数据库... 查看详情

vs生成桌面应用程序

...就是“Windows呈现基础”,你看它的目的非常明确,就是用来把数据“显示”给用户看的(说白了就是用来做UI的)。如果只是给用户显示几串文本、两三张图片或者几个表格那WPF就太糗了,幸乎,WPF可不是这等素食动物——大家... 查看详情

electron-vue+element-ui构建桌面应用(代码片段)

最近需要用Node.js做一个桌面的应用,了解到electron可以用来做跨平台的桌面应用,而vue可以用来作为界面的解决方案,研究了一会儿如何把他们两个整合到一起使用,遇到了各种问题而放弃,毕竟作为一个非前端开发人员我的目... 查看详情

python主要用来干啥?

...可。除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。许多大型网站就是用Python开发 查看详情

zookeeper可以用来做什么(转)

在ZooKeeper的官网上有这么一句话:ZooKeeperisacentralizedserviceformaintainingconfigurationinformation,naming,providingdistributedsynchronization,andprovidinggroupservices. 这大概描述了ZooKeeper主要可以干哪些事情:配置管理,名字服务, 查看详情

“interface”用啥修饰?

你好,接口是用来给别人实现的所以不能是static,也不能是final修饰interface对于其声明的方法,也不能用static或final来修饰,只能public因为static和final修饰的不能被继承对于其成员变量,却只能是publicstaticfinal类型,并且需要赋值... 查看详情

nodejs是用来做什么的?

有些人说“这是一种通过javascript语言开发web服务端的东西”。更直白的可以理解为:node.js有非阻se塞,事件驱动/O等特性,从而让高并发(highconcurrency)在的轮询和comet构建的应用中成为可能。  浏览器给网站发请求的过程一... 查看详情

git居然可以用来跟女神聊天?(代码片段)

Git是用来做啥的?想必码农朋友都知道,Git是版本控制软件,是软件开发过程中团队协作不可或缺的软件。但是,作为版本控制软件的Git,能跟聊天工具扯上关系吗?这二者似乎毫无关系,但脑洞大开的外国朋友EphiGabay就开发了... 查看详情

如何用java做网站?

java用来制作网站,一般是使用现成的框架,如下:java可以用来做网站java开发平台一般有三个版本:其中javaee用来网站开发*JavaSE(JavaPlatform,StandardEdition)。JavaSE以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和... 查看详情

5种php加密工具zendguardioncubesourcecopsourceguardianphpshield

...开浏览器就能访问PHP开发的桌面应用.如果源代码不想被别人看到,可以用php-beast之类的工具进行加密.还有,我想为什么PHP就不适合用来进行数据处理,毕竟就速度而言,PHP5都比Python快,更不用说PHP7了.--------------- 查看详情

rsa的公钥和私钥到底哪个才是用来加密和哪个用来解密

...用你的私钥加密这段哈希作为签名,并一起公布出去。当别人收到你的公告时,他可以用你的公钥解密你的签名,如果解密成功,并且解密出来的哈希值确实和你的公告原文一致,那么他就证明了两点:这消息确实是你发的,而... 查看详情

“开发人员有效负载”的目的是啥?它可以用来做啥?

】“开发人员有效负载”的目的是啥?它可以用来做啥?【英文标题】:Whatisthepurposeofthe"developerpayload"?Whatcanitbeusedfor?“开发人员有效负载”的目的是什么?它可以用来做什么?【发布时间】:2012-02-1508:23:04【问题描述】... 查看详情

003_java三大版本

...方案的开发、部署和管理相关的复杂问题的体系结构。是用来做网站的JavaME:Java微版以前称J2ME,是一个技术和规范的集合,它为移动设备提供了Java环境的开发与应用平台。是用来做手机软件的。 查看详情