|
发表于 2019-10-19 00:16:24
|
显示全部楼层
本帖最后由 阴阳神万物主 于 2019-10-19 00:37 编辑
可以添加一个变量,三个函数都能调用的那种,暂停与播放的按钮事件影响该变量的值。当该变量为暂停的值时,调用目标函数没有效果,只有该变量为播放的值时才有效果,在目标函数开头添加一个判断就行了。形如:- flg = False
- def 目标函数():
- if flg:
- pass
- else:
- print("函数执行的效果")
- def 播放按钮():
- flg = False
- def 暂停按钮():
- fag = True
复制代码
我正好有这么一个东西,可以给你作参考,图片文件自己准备啊
- import tkinter as tk
- from PIL import ImageTk
- from PIL import Image
- import time
- import math
- class SimpleApp(object):
- def __init__(self, master, filename, **kwargs):
- self.master = master
- self.filename = filename
- self.canvas = tk.Canvas(master, width=500, height=500)
- self.canvas.pack()
- self.update = self.draw().__next__
- self.flg = False
- def play():
- self.flg = False
- def stop():
- self.flg = True
- dr = tk.Button(master, text='制图', command=self.update)
- dr.pack()
- p = tk.Button(master, text='播放', command=play)
- p.pack()
- s = tk.Button(master, text='暂停', command=stop)
- s.pack()
- #master.after(1, self.update)
- #self.update()
- def draw(self):
- image = Image.open(self.filename)
- #image = image.convert("RGBA")
- #r = max(image.size)-min(cen)
- image = image.resize((100,100), Image.ANTIALIAS)
- angle = 0
- while True:
- pho = image.rotate(angle,resample=Image.BILINEAR)#,center=(image.size[0]+19-125,image.size[1]+36-86),translate=(-19,-36))#,expand=True)
- #pho = pho.crop((-pho.size[0],-pho.size[1],pho.size[0],pho.size[1]))
- #fff = Image.new('RGBA',pho.size,(255,255,255,255))
- #ph = Image.composite(pho, fff, pho)
- tkimage = ImageTk.PhotoImage(pho)
- canvas_obj = self.canvas.create_image(
- 250, 250, image=tkimage)
- self.master.after(10,self.update)
- #self.update()
- yield
- self.canvas.delete(canvas_obj)
- if not self.flg:#这里面是图片发生变化的地方
- angle += 1
- angle %= 360
- root = tk.Tk()
- app = SimpleApp(root, 'image.png')
- root.mainloop()
复制代码
|
|