2016-04-30 2 views
0

У меня есть окно tk с какими-то упакованными кадрами, и я хочу, чтобы новая панель скользила со дна окна (и делайте обратное движение при выходе из экрана). Это код, я использую, чтобы сделать эту панель отображаться статически в заданном положении (его помещают в положение относительно self.statusframe, который упакован внизу окна):В Python 3 (tkinter) можно ли анимировать кадр?

self.bottomframe.place(in_=self.statusframe, relx=1, y=0, anchor="se", relwidth=1, bordermode="outside") 
self.bottomframe.lift() 

есть простой способ оживить размещенную рамку tkinter, чтобы она, похоже, скользнула в нужное положение?

+0

Вы можете сделать это, используя стандартный шаблон для анимации tkinter (используя 'after'), изменяя координаты с помощью' place' на каждой итерации. –

+0

Вы имеете в виду что-то вроде этого? 'для y в диапазоне (-100,1): self.bottomframe.place (in_ = self.statusframe, relx = 1, y = y, anchor =" se ", relwidth = 1, bordermode =" outside ") self.bottomframe.after (100) ' –

+0

Ok. Кажется, я понял. Я сделал несколько опытов с ним, изменив диапазон на 'range (-9,1,3)' и изменив 'y = y' на' y = -y'. Теперь он исходит из желаемого направления в нужное положение. Однако я не использовал 'after', поскольку я не мог понять, как это работает. Анимация появилась только на экране, и я добавил '.update()' в цикле 'for'. Тем не менее, это очень медленно, по крайней мере, в моей системе, и именно поэтому я уменьшил анимацию до нескольких кадров. Есть ли способ сделать его рисовать и оживлять быстрее? –

ответ

0

Чтобы опубликовать обновление, которое может быть полезно для тех, кто сталкивается с этим вопросом, прочитав комментарий Брайана Окли и немного погуляв, в этом случае я закончил использовать этот код, который, я считаю, делает то, что я намеревался:

for y in range(-10,1,2): 
    self.bottomframe.update() 
    self.bottomframe.place(in_=self.statusframe, relx=1, y=y**2, anchor="se", relwidth=1, bordermode="outside") 
Смежные вопросы