Tkinter rozanimování individuálních částí obrazce – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Tkinter rozanimování individuálních částí obrazce – Python – Fórum – Programujte.comTkinter rozanimování individuálních částí obrazce – Python – Fórum – Programujte.com

 

26. 6. 2021   #1
-
0
-

Dobrý den, nevíte někdo jak rozanimovat tento obrazec s kodem vypadajícím takto:

import tkinter
import math
canvas = tkinter.Canvas(width=400, height=400)
canvas.pack()

#strany, počet, uhel rotace
yo=int(input("Zvolte, kolikastranný polygon chcete:"))
zahusteni=int(input("Zvolte, kolik polygonů chcete:"))
uhel=int(input("Zvolte, uhel otočky (5-50):"))

v=yo
group=[]
center=200
side=900

sx=center
sy=center
n=zahusteni
r=side
du=2*math.pi/n

for i in range(n):
    a=i/(uhel/10)
    for b in range(v):
        a1=sx+r*math.cos(a*du)
        group.append(a1)
        a2=sy+r*math.sin(a*du)
        group.append(a2)
        a=a+(n/v)
    canvas.create_polygon(group, fill="white", outline="black")
    group.clear()
    r=r-(side/n)


aby vypadal nějak takto?:

https://youtu.be/UTfHEst9lgM
Připojen obrázek.

(omlouvám se za odkaz, ale nešlo mi sem video vložit normálně)

Jsem začátečník a celkem si s tím nevím rady. Při nejlepším aby se to dalo udělat nějakým způsobem přes "canvas.move()".

Předem díky za rady!Připojen obrázek.

Nahlásit jako SPAM
IP: 89.24.37.–
gna
~ Anonymní uživatel
1849 příspěvků
26. 6. 2021   #2
-
+1
-
Zajímavé

canvas.create_... vrací ID vytvořeného objektu.

canvas.coords(ID, ...) umožňuje změnit souřadnice objektu.

.after(počet_milisekund, funkce, parametry) umožňuje naplánovat spuštění funkce.

import tkinter
import math


def calc_point(cx, cy, polomer, uhel):
    uhel = math.radians(uhel)
    x = cx + polomer * math.cos(uhel)
    y = cy + polomer * math.sin(uhel)
    return x, y


def calc_polygon_points(cx, cy, polomer, pocet, rotace=0):
    uhel_start = 270
    uhel_step = 360 / pocet
    points = []
    for i in range(pocet):
        uhel = uhel_start + rotace + i * uhel_step
        point = calc_point(cx, cy, polomer, uhel)
        points.extend(point)
    return points


def main():
    pocet_stran = 5
    pocet_polygonu = 50
    uhel_otocky = -3

    size_start = 10
    size_step = 7

    root = tkinter.Tk()
    canvas = tkinter.Canvas(root, width=400, height=400, bg="white")
    canvas.pack()

    polygons = []

    for i in range(pocet_polygonu):
        polysize = size_start + i * size_step
        polyrot = i * uhel_otocky
        points = calc_polygon_points(200, 200, polysize, pocet_stran, polyrot)
        polyid = canvas.create_polygon(points, fill="", outline="black")
        polygons.append((polyid, polysize, polyrot))

    def update(rotace=0):
        for polyid, polysize, polyrot in polygons:
            points = calc_polygon_points(200, 200, polysize, pocet_stran, polyrot + rotace)
            canvas.coords(polyid, points)
        root.after(100, update, (rotace + 5) % 360)

    root.after(100, update)
    root.mainloop()

if __name__ == "__main__":
    main()
Nahlásit jako SPAM
IP: 213.211.51.–
26. 6. 2021   #3
-
0
-

#2 gna
Díky moc za odpověď! Kouknu na to 

Nahlásit jako SPAM
IP: 37.48.16.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

Obrazce — založil Hanmir1

Geometrie, obrazce — založil honza572

Obrazce v konzoli — založil Lukas

Vykreslení obrazce — založil Bobacz

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý