Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Помогите с кодом на Python

Хочу сделать часы с помощью библиотеки Tkinter. Не могу разобраться со 2ым циклом. Чтобы если переменная функции hour была 0, то проходилo введеное кол во минут, а если 1 час или больше, то сначала проходят циклы по 60 минут, а потом то что было введено



import time
from tkinter import *
from math import sin, cos

shag = 6
width = 300
height = 300
ugol_minute = 180
ugol_hour = 180

win = Tk()
win.title('Палка флексит вокруг круга')
win.geometry('300x300')
c = Canvas(width=width, height=height, bg='#3AA6D0')
c.pack()

c.create_oval([width * 0.1, height * 0.1], [width * 0.9, height * 0.9], width=width / 75)

def clock(speed, hour, minute):
for a in range(hour + 1):
global ugol_hour
angle_h = ugol_hour * 3.14 / 180
h1 = (width * 0.25) * sin(angle_h) + width * 0.5
h2 = (height * 0.25) * cos(angle_h) + height * 0.5
c.delete('hour_s')
c.create_line(width * 0.5, height * 0.5, h1, h2, tag='hour_s', arrow=LAST)
win.update()
ugol_hour -= 6

for i in range(minute + 1):

global ugol_minute
angle_m = ugol_minute * 3.14 / 180
m1 = (width * 0.35) * sin(angle_m) + width * 0.5
m2 = (height * 0.35) * cos(angle_m) + height * 0.5
c.delete('minute_s')
c.create_line(width * 0.5, height * 0.5, m1, m2, tag='minute_s', arrow=LAST)
win.update()
ugol_minute -= 6

for ugol_second in range(180, -180, -shag):
angle = ugol_second * 3.14 / 180
s1 = (width * 0.39) * sin(angle) + width * 0.5
s2 = (height * 0.39) * cos(angle) + height * 0.5

c.delete('second_s')
win.update()
c.create_line(width * 0.5, height * 0.5, s1, s2, tag='second_s', arrow=LAST)
win.update()
time.sleep(speed)
c.delete('second_s')
c.create_line(width * 0.5, height * 0.5, 150.18634039122895, 33.00014838787787, tag='second_s', arrow=LAST)
clock(0.0001, 2, 5)

win.mainloop()

По дате
По рейтингу
Аватар пользователя
Новичок

делай все в один цикл

секундная стрелка правильно, что поворачивается на 6 градусов в секунду

минутная должна на 0,1 градус/секунду
часовая 0,008 град/сек

Аватар пользователя
Мастер

Добавьте тильды в местах отступов, как мы должны это тестить?