Tkinter- Python вращать анимацию изображения при нажатой кнопке - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь оживить изображение, пока нажата кнопка, иначе изображение остановится.

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

Если время установлено как True, изображение автоматически начнет вращаться, но если я добавлю sensor.is_pressed изображение не появляется. Также я пытаюсь переместить while перед angle +=1, но изображение появляется только и никогда не начинает двигаться, даже если я нажимаю кнопку

1 Ответ

0 голосов
/ 20 июня 2020

используйте метод root .update для принудительного обновления UI

        angle += 1
        angle %= 360
        self.root.update()
        time.sleep(0.02)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...