Найти - Пользователи
Полная версия: Проблема с кодом вращения фигуры в Canvas
Начало » Python для новичков » Проблема с кодом вращения фигуры в Canvas
1
Konstantin1984+
Я написал код для вращения фигуры состоящей из 37 сегментов (условный круг). Но почему-то вращения нет.
 from tkinter import *
import math
from time import sleep
root=Tk()
root.title('Барабан')
width=460
height=460
c = Canvas(width=width,height=height,bg='grey80')
c.pack()
radius=200
def x_coordinate(dlina,gradus):
    return width/2+dlina*math.cos(gradus*math.pi/180)
def y_coordinate(dlina,gradus):
    return height/2-dlina*math.sin(gradus*math.pi/180)
gradus=90-360/37 #фигура (условный круг) состоит из 37 сегментов
#построение первоначальной фигуры
x1=width/2
y1=height/2-radius
for n in range(37):
    if n==0:zvet='green'
    elif n%2==0:zvet='black'
    elif n%2!=0:zvet='red'
    x2=x_coordinate(radius,gradus)
    y2=y_coordinate(radius,gradus)
    segment=c.create_polygon(width/2,height/2,x1,y1,x2,y2,
    fill=zvet, outline="")
    x1,y1=x2,y2
    gradus=gradus-360/37
#смещение сегментов на угол "360/37/10"
gradus=90-360/37/10
while True:
    for n in range(37):
        x1=x_coordinate(radius,gradus)
        y1=y_coordinate(radius,gradus)
        x2=x_coordinate(radius,gradus-360/37)
        y2=y_coordinate(radius,gradus-360/37)
        c.coords(n+1,width/2,height/2,x1,y1,x2,y2) 
        gradus=gradus-360/37
    c.update()
    sleep(0.2)
  
    
root.mainloop()

rami
Ну, почему нет вращения? Есть вращение на целых ноль градусов, ваши сегменты уверенным шагом топчутся на месте .


Добавьте одну строчку кода (сдвиг угла между циклами):
 ........
while True:
    gradus -= 360/37        #добавить смещение между циклами
    for n in range(37):
        .........

Остальное как у вас. Желательно сделать вращение более плавным (уменьшить угол смещения и sleep)
Konstantin1984+
Спасибо! Что-то я затупил, поспешно обратился к форуму.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB