当前位置: 首页>編程日記>正文

python 显示gif_使用tkinter显示动态gif

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


https://www.fengoutiyan.com/post/15863.html

相关文章:

  • python tkinter详解
  • python中tkinter
  • pythonif
  • python图形化
  • python图形界面
  • python opencv
  • python tuple
  • python3
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機