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相关推荐

  1. python gui 框架中显示gif_使用tkinter显示动态gif

    import tkinter astk#这个语句导入tkinter模块,但为方便,为它定义了一个别名tk. import os import tkinter.messagebox #messagebo ...

  2. python读取摄像头或者视频文件、并在gui中实时显示_python:tkinter显示来自网络摄像头的视频并执行QR扫描...

    我一直在尝试创建一个tkinter顶级窗口,用于流式传输视频表单摄像头并执行QR扫描.我从SO和another code得到这个QR扫描代码,它只是从网络摄像头更新图像,而不是在tkinter标签上流 ...

  3. 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 ...

  4. php数据库查询中文方块,解决Python数据可视化中文部分显示方块问题

    一.问题 代码如下,发现标题的中文显示的是方块 import matplotlib import matplotlib.pyplot as plt fig = plt.figure() ax = fi ...

  5. python画图中文显示_解决Linux系统中python matplotlib画图的中文显示问题

    最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些 ...

  6. python的image读取的图片是什么类型的-python如何实现读取并显示图片(不需要图形界面)...

    在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1 ...

  7. python界面图片-python如何实现读取并显示图片(不需要图形界面)

    在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. ...

  8. python横向柱状图-python画柱状图--不同颜色并显示数值的方法

    用python画柱状图容易,但是如何对不同柱子使用不同颜色呢?同时在柱子顶端显示精确数值? 主要用的方法为: atplotlib.pyplot.bar(left, height, width=0.8, ...

  9. python实现http下载文件-Python HTTP下载文件并显示下载进度条功能的实现

    下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: im ...

  10. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command) 目录 tkinter应用案例 1.添加菜单栏组件 2.tkinter应用案例:添 ...

最新文章

  1. 发条js调试工具_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...
  2. find name 模糊匹配_Linux的文件搜索命令(locate ,find,grep,find命令和)
  3. 异常检测-孤立森林(IsolationForest)
  4. java 逐行写入csv_go|使用go读写CSV文件
  5. CF1313D:Happy New Year(状压dp)
  6. 太和二中计算机考试,安徽省太和二中高二数学下册期末考试试题精选
  7. 信息学奥赛一本通(1070:人口增长)
  8. python的前端开发_Python开发【前端】:html
  9. jquery ajax 调用webservice以及跨域问题
  10. Word 模板 - 新建向导
  11. nodejs+express留言板功能实现
  12. 微信商户收款码在哪里下载 -PC端
  13. 关于核磁共振项目的硬件理解
  14. 2021年施工员-装饰方向-岗位技能(施工员)免费试题及施工员-装饰方向-岗位技能(施工员)复审考试
  15. 基于IO多路复用的TCP客户端
  16. linux c编程文件枷锁
  17. ERP-非财务人员的财务培训教(三)------公司/部门预算编制与评价
  18. 利率下行期 财该怎么理
  19. mysql 想在某个时间上再加上一段时间
  20. 方差、协方差、协方差矩阵的概念及意义 的理解

热门文章

  1. 大地测量学基础 | 时间系统
  2. 【2021版】想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(三)
  3. 基于单片机的便携式瓦斯检测仪系统设计-基于单片机超声波停车位自动检测系统-基于单片机产品数量自动计量系统设计-基于单片机激光电子琴设计-基于单片机锂电池电量显示设计-基于单片机温湿度农田自动灌溉设计
  4. 设计心理学-产品设计的几个原则
  5. android通过经纬度获取地址,android之location 根据接口获取经纬度信息
  6. Niushop 快递打印单模板设置
  7. 聊聊 Xcode 编译 ToolChain
  8. bwlabel函数和regionprops函数用法详解
  9. 迅雷不及掩耳 山寨版iPhone 5令人瞠目
  10. 各品牌硬盘型号说明及希捷Seagate固件门的硬盘型号