Форум сайта python.su
Очень интересует вопрос параллельного исполнения нескольких функций, вот простой пример программы: из танка вылетают снаряды, каждый последующий останавливает движение предыдущего, пока последующий не пролетит, предыдущий не может продолжить свое движение. Прошу пояснить, как запараллелить процессы, чтобы не было видимых пауз.
Код ниже.
from tkinter import * from time import sleep root=Tk() c = Canvas(width=460,height=460,bg='grey80') c.pack() x=10 y=10 predmet1=c.create_rectangle(x,y,x+100,y+40,tag='tank',fill="gray") oval=c.create_oval(x+45,y+10,x+75,y+30,tag='tank') predmet2=c.create_rectangle(x+75,y+17,x+110,y+23,tag='tank',fill="gray") def funk(event): predmet4=c.create_rectangle(x+110,y+17,x+117,y+23,fill="gray80",outline="gray80") while True: c.itemconfig(predmet4,fill="black") c.move(predmet4,5,0) c.update() sleep(0.02) c.focus_set() c.bind('<Button-1>',funk) root.mainloop()
Офлайн
Konstantin1984+В питоне есть модуль threading. Но разобраться в этой теме будет не так просто. Надо прочитать несколько толстых книжек.
Прошу пояснить, как запараллелить процессы, чтобы не было видимых пауз.
Отредактировано py.user.next (Ноя. 5, 2024 03:10:03)
Офлайн
Всё намного проще — нужно использовать tag:
def funk(event): # predmet4=c.create_rectangle(x+110,y+17,x+117,y+23,fill="gray80",outline="gray80") predmet4=c.create_rectangle(x+110,y+17,x+117,y+23, tag='shell', fill="gray80",outline="gray80") # добавить tag while True: c.itemconfig(predmet4, fill="black") # c.move(predmet4, 5, 0) c.move("shell", 5, 0) # использовать tag c.update() sleep(0.02)
Офлайн
Спасибо!
Офлайн