python 显示gif_使用tkinter显示动态gif
import tkinter astk#这个语句导入tkinter模块,但为方便,为它定义了一个别名tk。
import os
import tkinter.messagebox #messagebox是普通windows编程中经常用到的,目的是显示个信息框
import base64#要将编码之后的图片数据解码并保存为图片
import os#我们删除图片,这个要添加进来from main_w_gif import img assocket_one #接下来就是在文件中导入你刚刚生成的xxx.py文件,因为每个图片文件里面都是img变量,所以导入的时候可以用别名,这是python的基本用法了,不再多说。from not_gif import img assocket_twofrom sure_gif import img assocket_three
tmp= open('socket_one.gif', 'wb') #这是解码。保存图片
tmp.write(base64.b64decode(socket_one))
tmp= open('socket_two.gif', 'wb')
tmp.write(base64.b64decode(socket_two))
tmp= open('socket_three.gif', 'wb')
tmp.write(base64.b64decode(socket_three))
tmp.close()#现在就能用了,用完(加载到程序里之后)"""我们编写的Python代码会调用内置的Tkinter,Tkinter封装了访问Tk的接口;
Tk是一个图形库,支持多个操作系统,使用Tcl语言开发;
Tk会调用操作系统提供的本地GUI接口,完成最终的GUI。
所以,我们的代码只需要调用Tkinter提供的接口就可以了
tkinter的两种写法,这两种写法是有区别的,
第一种,使用就需要加类名,也就是需要加tkinter,
第二种,已经把tkinter完全导入了,你不用管调用的是哪个类,只管使用就可以了。所以不需要加类名。
#法1:
import tkinter
win=tkinter.Tk()
win.mainloop()
#法2:from tkinter import *win=Tk()"""window =tk.Tk()
# 设置主窗口大小
window.geometry('600x500')
# 设置主窗口标题
window.title('caiya')
def closeWindow():
tkinter.messagebox.showerror(title='别这样',message='还没回答呢!') #错误消息框returnwindow.protocol('WM_DELETE_WINDOW', closeWindow)
# 设置文字
lable1= tk.Label(window, text="灰-灰-灰-非-飞") #, font=("Arial", 14)
lable2= tk.Label(window, text="请问你是不是你们实验室最漂亮,最可爱,最努力,最认真的小师妹?") #, font=("Arial", 34)
numIdx= 6# gif的帧数
frames= [tk.PhotoImage(file='socket_one.gif', format='gif -index %i' %(i)) for i inrange(numIdx)]
imgLabel=tk.Label(window)
# 调用tkinter的布局管理模块
lable1.pack()
lable2.pack()
imgLabel.pack()
numIdx1= 6# gif的帧数
photo1= [tk.PhotoImage(file='socket_two.gif', format='gif -index %i' %(i)) for i inrange(numIdx1)]
numIdx2= 6# gif的帧数
photo2= [tk.PhotoImage(file='socket_three.gif', format='gif -index %i' %(i)) for i inrange(numIdx2)]
def Love():
love=tk.Toplevel(window)
love.geometry('380x320')
love.title("caiya")
lable= tk.Label(love,text="哈哈,我猜就是") #, font=("Arial", 24)
imgLabel1=tk.Label(love)
imgLabel1.pack()
update1(0,imgLabel1,love)
btn= tk.Button(love, text="完美结束",width=30, height=2)
btn.config(command=lambda :closelove(love))
lable.pack()
love.protocol('WM_DELETE_WINDOW', closeall)
btn.pack()
# 点击不喜欢的操作
def NoLove():
no_love=tk.Toplevel(window)
no_love.geometry('600x350')
no_love.title("caiya")
lable= tk.Label(no_love,text="这样骗自己真的好吗?") #, font=("Arial", 24)
imgLabel2=tk.Label(no_love)
imgLabel2.pack()
btn= tk.Button(no_love, text="BACK",width=30, height=2)
btn.config(command=lambda :closenolove(no_love))
lable.pack()
btn.pack()
update2(0, imgLabel2,no_love)
# 子窗口关闭操作
def closeall():
window.destroy()
def closelove(love):
window.destroy()
def closenolove(no_love):
no_love.destroy()
# 设置按钮
btn1= tk.Button(window, text="是",width=30, height=2)
# 配置按钮
btn1.config(command=Love)
btn2= tk.Button(window, text="不是",width=30, height=2)
btn2.config(command=NoLove)
# 调用tkinter的布局管理模块
btn1.pack()
btn2.pack()
#定时器函数
def update(idx):
frame=frames[idx]
idx+= 1#下一张的序号
imgLabel.configure(image=frame)
window.after(100, update, idx%numIdx)#200毫秒之后继续执行定时器函数
def update1(idx,imgLabel1,love):
frame=photo2[idx]
idx+= 1imgLabel1.configure(image=frame)
idx=idx%numIdx1
love.after(200, update1,idx%numIdx1,imgLabel1,love)
def update2(idx,imgLabel2,no_love):
frame=photo1[idx]
idx+= 1imgLabel2.configure(image=frame)
idx=idx%numIdx2
no_love.after(200, update2,idx%numIdx2,imgLabel2,no_love)
update(0)
window.mainloop()"""window.mainloop就会让window不断的刷新,如果没有mainloop,就是一个静态的window,传入进去的值就不会有循环,mainloop就相当于一个很大的while循环,有个while,每点击一次就会更新一次,所以我们必须要有循环
所以的窗口文件都必须有类似的mainloop
mainloop是窗口文件的关键的关键的关键。"""os.remove('socket_one.gif')#删除图片
os.remove('socket_two.gif')
os.remove('socket_three.gif')
python 显示gif_使用tkinter显示动态gif相关推荐
- python gui 框架中显示gif_使用tkinter显示动态gif
import tkinter astk#这个语句导入tkinter模块,但为方便,为它定义了一个别名tk. import os import tkinter.messagebox #messagebo ...
- python读取摄像头或者视频文件、并在gui中实时显示_python:tkinter显示来自网络摄像头的视频并执行QR扫描...
我一直在尝试创建一个tkinter顶级窗口,用于流式传输视频表单摄像头并执行QR扫描.我从SO和another code得到这个QR扫描代码,它只是从网络摄像头更新图像,而不是在tkinter标签上流 ...
- python listbox大小_Python3 tkinter基础 Listbox height 显示行数的上限
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda : 4.5.11 typesetting : Markdown ...
- php数据库查询中文方块,解决Python数据可视化中文部分显示方块问题
一.问题 代码如下,发现标题的中文显示的是方块 import matplotlib import matplotlib.pyplot as plt fig = plt.figure() ax = fi ...
- python画图中文显示_解决Linux系统中python matplotlib画图的中文显示问题
最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些 ...
- python的image读取的图片是什么类型的-python如何实现读取并显示图片(不需要图形界面)...
在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1 ...
- python界面图片-python如何实现读取并显示图片(不需要图形界面)
在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. ...
- python横向柱状图-python画柱状图--不同颜色并显示数值的方法
用python画柱状图容易,但是如何对不同柱子使用不同颜色呢?同时在柱子顶端显示精确数值? 主要用的方法为: atplotlib.pyplot.bar(left, height, width=0.8, ...
- python实现http下载文件-Python HTTP下载文件并显示下载进度条功能的实现
下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: im ...
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command) 目录 tkinter应用案例 1.添加菜单栏组件 2.tkinter应用案例:添 ...
最新文章
- 发条js调试工具_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...
- find name 模糊匹配_Linux的文件搜索命令(locate ,find,grep,find命令和)
- 异常检测-孤立森林(IsolationForest)
- java 逐行写入csv_go|使用go读写CSV文件
- CF1313D:Happy New Year(状压dp)
- 太和二中计算机考试,安徽省太和二中高二数学下册期末考试试题精选
- 信息学奥赛一本通(1070:人口增长)
- python的前端开发_Python开发【前端】:html
- jquery ajax 调用webservice以及跨域问题
- Word 模板 - 新建向导
- nodejs+express留言板功能实现
- 微信商户收款码在哪里下载 -PC端
- 关于核磁共振项目的硬件理解
- 2021年施工员-装饰方向-岗位技能(施工员)免费试题及施工员-装饰方向-岗位技能(施工员)复审考试
- 基于IO多路复用的TCP客户端
- linux c编程文件枷锁
- ERP-非财务人员的财务培训教(三)------公司/部门预算编制与评价
- 利率下行期 财该怎么理
- mysql 想在某个时间上再加上一段时间
- 方差、协方差、协方差矩阵的概念及意义 的理解
热门文章
- 大地测量学基础 | 时间系统
- 【2021版】想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(三)
- 基于单片机的便携式瓦斯检测仪系统设计-基于单片机超声波停车位自动检测系统-基于单片机产品数量自动计量系统设计-基于单片机激光电子琴设计-基于单片机锂电池电量显示设计-基于单片机温湿度农田自动灌溉设计
- 设计心理学-产品设计的几个原则
- android通过经纬度获取地址,android之location 根据接口获取经纬度信息
- Niushop 快递打印单模板设置
- 聊聊 Xcode 编译 ToolChain
- bwlabel函数和regionprops函数用法详解
- 迅雷不及掩耳 山寨版iPhone 5令人瞠目
- 各品牌硬盘型号说明及希捷Seagate固件门的硬盘型号