Как в python turtle tkinter создать цикл?

в этом коде нужно добавить другой код
первый код:
код

from tkinter import *
import turtle as t
import time
class cat():
    def __init__(self, кольор, прикраси_набор, прикраси):
        global root
        root = Tk()
        root.iconbitmap(r"C:\\cat.ico")
        root.resizable(0, 0)
        root.title("cat home")
        root.geometry("600x470")
        print(root.winfo_rooty()+(270-root.winfo_rooty()))
        w = Canvas(root, width=root.winfo_rootx()+(600-root.winfo_rootx()), \
           height=root.winfo_rooty()+(470-root.winfo_rooty()))
        w.grid()
        self.windows = w
        self.red = t.TurtleScreen(self.windows)
        світ_image = r"C:\\спрайти\\кіт\\світ2.gif"
        self.red.addshape(світ_image)
        self.світ = t.RawTurtle(self.red)
        self.світ.shape(світ_image)
        self.світ.up()
        self.color = кольор
        self.прикраси = прикраси
        self.image = (r"C:\\спрайти\\кіт\\кіт %s.gif" % кольор)
        print(self.image)
        self.id = t.RawTurtle(self.red)
        self.red.addshape(self.image)
        self.id.shape(self.image)
        self.id.up()
        self.id.speed(2)
        print(str(len(self.прикраси)+1) + str(self.прикраси))
        for r in range(0, len(self.прикраси)):
            self.прикраси[r] = t.RawTurtle(self.red)
            self.прикраси[r].speed(100)
            self.image_прикраса = (r"C:\\спрайти\\кіт\\прикраса %s.gif" % прикраси_набор[r])
            self.red.addshape(self.image_прикраса)
            self.прикраси[r].shape(self.image_прикраса)
            self.прикраси[r].up()
            if прикраси_набор[r] == "бант":
                self.прикраси[r].left(-90)
                self.прикраси[r].forward(10)
                self.прикраси[r].left(90)
                self.прикраси[r].forward(13)
            self.прикраси[r].speed(2)
        self.id.setheading(90)
        self.id.forward(-10)
        self.id.setheading(-90)
        self.прикраси[r].setheading(-90)
        self.x = 0
        self.y = 0

    def Left(self, evt):
        try:
            up = -35
            self.x -= 35
            self.світ.forward(up)
        except RecursionError:
            pass

    def right(self, evt):
        try:
            up = 35
            self.x += up
            self.світ.forward(up)
        except RecursionError:
            pass


    def jump(self, evt):
        up = 18
        self.y += up
        self.id.forward(0-up)
        for r in range(0, len(self.прикраси)):
            self.прикраси[r].forward(0-up)
        time.sleep(0.6)
        self.id.forward(up)
        for r in range(0, len(self.прикраси)):
            self.прикраси[r].forward(up)
        self.y -= up


red = cat("рудий", ["бант"], [1])
global root
root.bind('<Right>', red.Left)
root.bind('<Left>', red.right)
root.bind('<Up>', red.jump)


код два:
код

while 1:
    pass


потому что мне нужно создать действие которое буде выполнятся всегда а если в цикл поместить
реакцию на клавиши то они не работают а если они не в цикле то цикл их отключает...
как это добавить?
картинки:
картинки

кот:
604f7c8fa02c7956006987.gif
мир:
604f7c999678a224571734.gif
бант:
604f7c9f51f59134586653.gif
ну и кот-иконка скачан вот тут:
https://icon-icons.com/ru/%D0%B7%D0%BD%D0%B0%D1%87...
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
@Alexa2007
from tkinter import *
import turtle as t
import time
import threading

class cat():
    def __init__(self, кольор, прикраси_набор, прикраси):
        global root
        root = Tk()
        root.iconbitmap(r"C:\\cat.ico")
        root.resizable(0, 0)
        root.title("cat home")
        root.geometry("600x470")
        print(root.winfo_rooty()+(270-root.winfo_rooty()))
        w = Canvas(root, width=root.winfo_rootx()+(600-root.winfo_rootx()), \
           height=root.winfo_rooty()+(470-root.winfo_rooty()))
        w.grid()
        self.windows = w
        self.red = t.TurtleScreen(self.windows)
        світ_image = r"C:\\спрайти\\кіт\\світ2.gif"
        self.red.addshape(світ_image)
        self.світ = t.RawTurtle(self.red)
        self.світ.shape(світ_image)
        self.світ.up()
        self.color = кольор
        self.прикраси = прикраси
        self.image = (r"C:\\спрайти\\кіт\\кіт %s.gif" % кольор)
        print(self.image)
        self.id = t.RawTurtle(self.red)
        self.red.addshape(self.image)
        self.id.shape(self.image)
        self.id.up()
        self.id.speed(2)
        print(str(len(self.прикраси)+1) + str(self.прикраси))
        for r in range(0, len(self.прикраси)):
            self.прикраси[r] = t.RawTurtle(self.red)
            self.прикраси[r].speed(100)
            self.image_прикраса = (r"C:\\спрайти\\кіт\\прикраса %s.gif" % прикраси_набор[r])
            self.red.addshape(self.image_прикраса)
            self.прикраси[r].shape(self.image_прикраса)
            self.прикраси[r].up()
            if прикраси_набор[r] == "бант":
                self.прикраси[r].left(-90)
                self.прикраси[r].forward(10)
                self.прикраси[r].left(90)
                self.прикраси[r].forward(13)
            self.прикраси[r].speed(2)
        self.id.setheading(90)
        self.id.forward(-10)
        self.id.setheading(-90)
        self.прикраси[r].setheading(-90)
        self.x = 0
        self.y = 0
        self.start_action()

    def loop_poop(self):
        while True:
            print(time.ctime())
            time.sleep(1)

    def start_action(self):
        thread = threading.Thread(target=self.loop_poop)
        thread.start()
        


    def Left(self, evt):
        try:
            up = -35
            self.x -= 35
            self.світ.forward(up)
        except RecursionError:
            pass

    def right(self, evt):
        try:
            up = 35
            self.x += up
            self.світ.forward(up)
        except RecursionError:
            pass


    def jump(self, evt):
        up = 18
        self.y += up
        self.id.forward(0-up)
        for r in range(0, len(self.прикраси)):
            self.прикраси[r].forward(0-up)
        time.sleep(0.6)
        self.id.forward(up)
        for r in range(0, len(self.прикраси)):
            self.прикраси[r].forward(up)
        self.y -= up



red = cat("рудий", ["бант"], [1])
global root

root.bind('<Right>', red.Left)
root.bind('<Left>', red.right)
root.bind('<Up>', red.jump)

root.mainloop()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы