繁体   English   中英

按下按钮时,Tkinter-Python 旋转图像 animation

[英]Tkinter-Python rotate image animation while button is pressed

我正在尝试在按下按钮时为图像设置动画,否则图像将停止

import time
import tkinter
from PIL import Image, ImageTk
from gpiozero import Button
import RPi.GPIO as GPIO
sensor = Button(11)

class SimpleApp(object):
    def __init__(self, master, filename, **kwargs):
        self.master = master
        self.filename = filename
        self.canvas = tkinter.Canvas(master, width=500, height=500)
        self.canvas.pack()
        self.process_next_frame = self.draw().__next__  
        master.after(1, self.process_next_frame)

    def draw(self):

        image = Image.open(self.filename)
        angle = 0
        print(self.process_next_frame)
        while (sensor.is_pressed):
            tkimage = ImageTk.PhotoImage(image.rotate(angle))
            canvas_obj = self.canvas.create_image(250, 250, image=tkimage)
            self.master.after_idle(self.process_next_frame)
            yield
            self.canvas.delete(canvas_obj)
            angle += 1
            angle %= 360
            time.sleep(0.002)


root = tkinter.Tk()
app = SimpleApp(root, 'load.png')
root.mainloop() 

如果 while 设置为True图像会自动开始旋转,但如果我添加sensor.is_pressed图像不会出现。 我也尝试在angle +=1之前移动一段时间,但即使我按下按钮,图像也只会出现并且永远不会开始移动

我正在尝试在按下按钮时为图像设置动画,否则图像将停止

import time
import tkinter
from PIL import Image, ImageTk
from gpiozero import Button
import RPi.GPIO as GPIO
sensor = Button(11)

class SimpleApp(object):
    def __init__(self, master, filename, **kwargs):
        self.master = master
        self.filename = filename
        self.canvas = tkinter.Canvas(master, width=500, height=500)
        self.canvas.pack()
        self.process_next_frame = self.draw().__next__  
        master.after(1, self.process_next_frame)

    def draw(self):

        image = Image.open(self.filename)
        angle = 0
        print(self.process_next_frame)
        while (sensor.is_pressed):
            tkimage = ImageTk.PhotoImage(image.rotate(angle))
            canvas_obj = self.canvas.create_image(250, 250, image=tkimage)
            self.master.after_idle(self.process_next_frame)
            yield
            self.canvas.delete(canvas_obj)
            angle += 1
            angle %= 360
            time.sleep(0.002)


root = tkinter.Tk()
app = SimpleApp(root, 'load.png')
root.mainloop() 

如果 while 设置为True图像会自动开始旋转,但如果我添加sensor.is_pressed图像不会出现。 我也尝试在angle +=1之前移动一段时间,但即使我按下按钮,图像也只会出现并且永远不会开始移动

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM