ткинтер, неожиданное поведение после, обратный вызов - PullRequest
0 голосов
/ 11 апреля 2020

Эта функция отображает изображение в кадре и поворачивает его постепенно от указанных начальной и конечной точек. Это работает в том смысле, что изображение отображается под правильным конечным углом, и пока l oop увеличивается. Вывод на печать:

angle is 8  card angle is 32
2
angle is 12  card angle is 32
3
angle is 16  card angle is 32
4
angle is 20  card angle is 32
5
angle is 24  card angle is 32
6
angle is 28  card angle is 32
7
angle is 32  card angle is 32
8

Чего не делает эта функция, так это делать паузу при каждом увеличении для отображения промежуточных повернутых изображений, как я и ожидал, «после». Скрипт, который вызывает эту функцию, успешно использует after после того же виджета, поэтому я предполагаю, что while не выполняет то, что я думаю. Я пробовал несколько способов зацикливания с одинаковым результатом или сложными трассировками команд tcl. Что мне не хватает, пожалуйста?

    def turn( self):
        while True:
            if self.angle > self.card_angle:
                break

            print(f'angle is {self.angle }  card angle is {self.card_angle}')

            self.angle+=4

            self.label.destroy()

            #create PIL ImageTk which has a rotate method.
            self.tkimage=ImageTk.PhotoImage(self.card_pic.rotate(self.angle,expand=1))

            #creat label with tkImage and show label
            self.label=tk.Label(self)   
            self.label['image']=self.tkimage        
            self.label.pack()           

            self.count+=1
            print(self.count)
            self.label.after(1000,self.turn)

1 Ответ

0 голосов
/ 12 апреля 2020

Сортировка. Ничего общего с tkinter, только моя постоянная неспособность понять циклы while. Работает нормально с 'if' + return.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...