Рейтинг  

Яндекс.Метрика
Яндекс цитирования
 

   

Статистика  

Пользователи
7
Материалы
576
Кол-во просмотров материалов
2730134
   

💾 Картинки летящей птички для занятия

Урок рассчитан на освоение загружать картинку на полотно окна и на перемещение графических объектов - анимация. По началу необходимо сделать оранжевый или жёлтый круг небольших размеров (40x40 или 50x50) и научиться перемещать его автоматически - через команду after(). Затем заменить объект круг картинкой и перемещать уже одну картинку. Только потом переходить в анимации - смене картинок во время движения.

Летящая птичка:

from tkinter import *

def load_pics():
    a = 1
    b = 14
    for i in range(a, b + 1):
        img = PhotoImage(file=f'./bird_right/bird{i}.png')
        pics1.append(img)

def get_img():
    return pics1[img_id]

def next_img():
    global img_id, x
    img_id += 1
    x = x + 10
    if x > (wg - 110):
        x = 0
    if img_id > 13:
        img_id = 0

def paint_img():
    can.itemconfig(bird, image=get_img())
    can.coords(bird, x, y)

def update():
    next_img()
    paint_img()
    win.after(100, update)

pics1 = []
pics2 = []
img_id = 0
x, y = 0, 0
wg = 800

win = Tk()
can = Canvas(win, width=wg, height=300, bg="white")
load_pics()
bird = can.create_image(x, y, image=get_img(), anchor=NW)
can.pack()
win.after(100, update)
win.mainloop()


Птичка летает туда-сюда:

from tkinter import *

def load_pics():
    a = 1
    b = 14
    for i in range(a, b + 1):
        img = PhotoImage(file=f'./bird_right/bird{i}.png')
        pics1.append(img)
    for i in range(a, b + 1):
        img = PhotoImage(file=f'./bird_left/bird{i}.png')
        pics2.append(img)

def get_img():
    if n == 1:
        return pics1[img_id]
    else:
        return pics2[img_id]

def next_img():
    global img_id, x, n
    img_id += 1
    x = x + n * 10
    if x > (wg - 110):
        n = -1
    elif x < 0:
        n = 1
    if img_id > 13:
        img_id = 0

def paint_img():
    can.itemconfig(bird, image=get_img())
    can.coords(bird, x, y)

def update():
    next_img()
    paint_img()
    win.after(100, update)

pics1 = []
pics2 = []
img_id = 0
x, y, n = 0, 0, 1
wg = 800

win = Tk()
can = Canvas(win, width=wg, height=300, bg="white")
load_pics()
bird = can.create_image(x, y, image=get_img(), anchor=NW)
can.pack()
win.after(100, update)
win.mainloop()



TKinter - функции (команды в таблице)

win.after(100, update)
event.keycode
canvas.itemconfig()
canvas.coords()
create_image()
PhotoImage()

  • canvas.itemconfig(ob, fill="red", width="200") - изменить свойства объекта ob
  • x1, y1, x2, y2 = canvas.coords(ob) получить координаты объекта ob
  • canvas.coords(ob, x1, y1, x2, y2) установить новые координаты объекта ob
  • event.keycode в keycode находится код нажатой клавиши (применяется в функции, вызываемой в bind())
  • img = PhotoImage(file='funny_bird.png')
    canvas.create_image(x, 10, anchor=NW, image=img)

   
   

Login Form