Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 17, 2012 07:59:03

Vadimoto
Зарегистрирован: 2012-11-11
Сообщения: 17
Репутация: +  -3  -
Профиль   Отправить e-mail  

python анимирование

приветствую, помогите плиз, задача в чем. Сцены для анимации. Дом и его окружение. Движение солнца.
(Дом и окружение с этим все ясно)Вопрос в следующем. как осуществить движение солнца?(солнце в jpg) буду очень признателен за помощь

Офлайн

#2 Ноя. 17, 2012 13:26:17

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

python анимирование

Можно воспользоваться Tkinter и объектом Canvas.
1. Качаете и импортируете PIL.
2. Выполняете инструкцию импортирования:

import Tkinter
import Image
import ImageTk
2. Сниматее данные с фотографии (в Вашем случае это фотография солнца)
Img = Image.open(file_foto_name)
3. Выполняете кодирование фотографии для возможности вставки в другие виджеты Tkinter
Img_x = ImageTk.PhotoImage(Img)
4. Создаете полотно (canvas)
Canvas_img = Tkinter.Canvas(root, height = **Высота всего рисунка, width = **Ширина всего рисунка)
5. Связываем полотно и Ваше переконвертированное изображение
S = Canvas_img.create_image(**Первая позицияХ, **Первая позицияУ, image = Img_x, anchor = "nw")
6. С помощью цикла динамически меняеете размещение Вашаго рисунка:
for posx in range(**Первая позицияХ, **Последняя позицияХ + 1):
    Canvas_img.move(S, приращение по Х, **Первая позицияУ) 
    Canvas_img.update_idletasks()

Где стоят ** Нужно ввести число….



Отредактировано 4kpt (Ноя. 17, 2012 16:51:43)

Офлайн

#3 Ноя. 17, 2012 13:35:19

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

python анимирование

Если так не понятно, могу выложить пример. Только солнца у меня нет….



Офлайн

#4 Ноя. 17, 2012 15:14:19

Vadimoto
Зарегистрирован: 2012-11-11
Сообщения: 17
Репутация: +  -3  -
Профиль   Отправить e-mail  

python анимирование

спасибо большое, а с рисунком GIF не нужно же лишний действий? конверт.и все прочее.. Выложите пример пожалуйста.Спасибо

Офлайн

#5 Ноя. 17, 2012 15:22:17

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

python анимирование

Выложу вечером. Сейчас занят. Если до этого времени никто другой не даст примера…
Да, gif конвертировать не нужно, но нужно…



Отредактировано 4kpt (Ноя. 17, 2012 15:24:13)

Офлайн

#6 Ноя. 17, 2012 16:58:55

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

python анимирование

Получите пример…

# -*- coding:utf-8 -*-
import ImageTk
import Tkinter
import time
root = Tkinter.Tk()
root.geometry("800x800+0+0")
img = ImageTk.PhotoImage(file = "001.gif")
cnv = Tkinter.Canvas(root, height = 700, width = 700)
cnv.pack()
S = cnv.create_image(100, 600, image = img, anchor = "nw")
def move_img(event = None):
    for i in range(41): # Всего шагов
        time.sleep(0.1) # Выставляется время шага
        #Выставляется направление и длина шага относительно начальных Х и У
        if i < 20: # от нижнего угла к верхнему двадцать шагов
            cnv.move(S, 10, -10)
        else: # через 20 шагов от верхнего к нижнему остальные 20
            cnv.move(S, 10, 10)
        cnv.update_idletasks() # Отобразить каждый шаг на экране
but = Tkinter.Button(root, text = u"Запустить движение")
but.bind("<Button-1>", move_img)
but.pack()
root.mainloop()

P.S. Не забудьте предварительно создать файл “001.gif” в той же папке, где буте располагаться Ваш листинг. Для корректной работы программы рационально, чтобы размез “001.gif” составлял 50Х50 пикселей…



Офлайн

#7 Ноя. 18, 2012 14:39:39

Vadimoto
Зарегистрирован: 2012-11-11
Сообщения: 17
Репутация: +  -3  -
Профиль   Отправить e-mail  

python анимирование

Благодарю, а вот можно еще спросить. Что в строке
but.bind(“<Button-1>”, move_img) вместо <Button-1> что вставлять?или как сделать движение без кнопки?

Офлайн

#8 Ноя. 18, 2012 15:16:43

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

python анимирование

Заменяешь строки:

but = Tkinter.Button(root, text = u"Запустить движение")
but.bind("<Button-1>", move_img)
but.pack()
на строку
move_img()
Это автоматически запустит функцию move_img без аргументов после прочтения всех предыдущих строк…



Отредактировано 4kpt (Ноя. 18, 2012 15:17:46)

Офлайн

#9 Ноя. 18, 2012 15:52:59

Vadimoto
Зарегистрирован: 2012-11-11
Сообщения: 17
Репутация: +  -3  -
Профиль   Отправить e-mail  

python анимирование

Прошу прощения за мою тупость в программировании)но в чем ошибка?

Прикреплённый файлы:
attachment Снимок1.PNG (43,8 KБ)

Офлайн

#10 Ноя. 18, 2012 15:58:39

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

python анимирование

Вам нужно сначала установить PIL (Python Image Librery). Не забудьте, что он должен быть под Ваш Python…



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version