Python: Eine Uhr in Turtle programmieren?
Hi Leute ich wollte in Python mit Turtle eine Uhr programmieren ! Ich habe auch begonnen doch sie zeigt mir einfach nur die aktuelle Uhrzeit an und bleibt dann stehen.Ich weiß auch nicht wie ich das ändern sollte. Hier ist das Programm:
from turtle import * import time speed(1000000000) minute=0 stunde=0
def gotoxy(x, y): pu() goto(x,y) pd()
def uhrzeit(): dt = list(time.localtime()) Stunden = dt[3] Minuten = dt[4] Sekunden = dt[5] gotoxy(0,0) rt(Stunden360/12 + (Minuten(360/12)/60)) pensize(6) pencolor('red') fd(radius/2) pu() bk(radius/2) setheading(90) pd() rt(Minuten360/60 + (Sekunden(360/60)/60)) pencolor('blue') pensize(3) fd(radius) pu() bk(radius) setheading(90) pd() rt(Sekunden*360/60) pensize(1) pencolor('green') fd(radius)
def uhrblatt(): color('black') gotoxy(0, radius) setheading(180) for i in range(12,0,-1): pu() rt(90) fd(15) lt(90) pd() write(i) pu() rt(90) bk(15) lt(90) pd() lt(90) pensize(2) fd(radius/10) bk(radius/10) rt(90)
circle(radius,360/12)
for i in range(60):
circle(radius, 360/60)
lt(90)
pensize(1)
fd(radius/15)
bk(radius/15)
rt(90)
for i in range(4):
pu()
circle(radius, 360/4)
lt(90)
pensize(4)
pd()
fd(radius/8)
bk(radius/8)
pu()
rt(90)
radius = int(textinput("Ziffernblatt","Geben Sie die Größe des Ziffernblatts ein: ")) gotoxy(0,-radius) rt(90) pu() fd(radius) pd() uhrblatt() uhrzeit()
2 Antworten
Hier ist mein Programm. Ich weiß ich habe das viel zu kompleziert programmiert, aber ich war damals nicht der Beste.:
"""Uhr"""
import turtle
import time
from turtle import *
speed(40)
##### Funktionen - Anfang #####
stunde = int(time.strftime("%H"))
minute = int(time.strftime("%M"))
sekunde = int(time.strftime("%S"))
#Springt an die Position x,y ohne zu zeichnen
def gotoxy(x,y):
pu()
goto(x,y)
pd()
def mlguhr(radius):
gotoxy(-300,radius+20)
color('pink')
write('by Laurence', font=('Ravie', 55))
gotoxy(0,0)
def ziffernblatt(radius):
dot() # zeichnet einen Punkt
fd(radius)
bk(radius*2)
fd(radius*2)
lt(90)
circle(radius,180)
zahlen(radius)
striche(radius,15)
def zahlen(radius):
setheading(90)
gotoxy(-11,-11) #Versatz, weil die Schrift rechts hochgestellt von der Position der Turtle ist
for zahl in range(12,0,-1):
pu()
fd(radius+15)
pd()
color('green')
write(zahl, font=('Harlow Solid Italic', 16))
pu()
bk(radius+15)
pd()
lt(180/12)
def striche(radius, laenge):
setheading(90)
gotoxy(0,0)
for i in range(60):
pu()
if i%15 == 0:
width(3)
color('red')
fd(radius-(2*laenge))
pd()
fd(2*laenge)
elif i%5 == 0:
width(2)
color('green')
fd(radius-(1.5*laenge))
pd()
fd(1.5*laenge)
else:
width(1)
color('pink')
fd(radius-laenge)
pd()
fd(laenge)
pu()
bk(radius)
rt(180/60)
pd()
def zeiger(laenge, dicke, farbe):
width(dicke)
color(farbe)
fd(laenge)
stamp()
bk(laenge)
##### Funktionen - Ende #####
##### Hauptprogramm #####
radius = int(textinput("Analoge Uhr", "Radius für das Ziffernblatt"))
tracer(0)
mlguhr(radius)
ziffernblatt(radius)
tracer(1)
#Stundenzeiger
def Stundenzeiger():
setheading(90)
minutenbeigabe=minute*(180/12)/60
rt(stunde*180/12+minutenbeigabe) # Winkel für die Stunde
zeiger(1.8*radius/3, 3, 'red')
#Stundenzeigerweg
def Stundenzeigerweg(): #bei update() blinkt es
setheading(90)
minutenbeigabe=minute*(180/12)/60
rt(stunde*180/12+minutenbeigabe) # Winkel für die Stunde
zeiger(1.8*radius/3, 3, 'white')
#Minutenzeiger
def Minutenzeiger():
setheading(90)
sekundenbeigabe=sekunde*(180/60)/60
rt(minute*180/60+sekundenbeigabe) # Winkel für die Minute
zeiger(7*radius/9, 2, 'green')
#Minutenzeigerweg
def Minutenzeigerweg():#bei update() blinkt es
setheading(90)
sekundenbeigabe=sekunde*(180/60)/60
rt(minute*180/60+sekundenbeigabe) # Winkel für die Minute
zeiger(7*radius/9, 2, 'white')
#Sekundenzeiger
def Sekundenzeiger():
setheading(90)
rt(sekunde*180/60) # Winkel für die Sekunde
zeiger(7*radius/8, 1, 'black')
#Sekundenzeigerweg
def Sekundenzeigerweg(): #bei update() blinkt es
setheading(90)
rt(sekunde*180/60) # Winkel für die Sekunde
zeiger(7*radius/8, 1, 'white')
ht() #macht die Turtle invisible
#zeichnet Zeiger
tracer(0)
Stundenzeiger()
Minutenzeiger()
Sekundenzeiger()
tracer(1)
#aktualisiert Zeiger
while True:
tracer(0)
Sekundenzeigerweg()
Minutenzeigerweg()
Stundenzeigerweg()
stunde = int(time.strftime("%I"))
minute = int(time.strftime("%M"))
sekunde = int(time.strftime("%S"))
Stundenzeiger()
Minutenzeiger()
Sekundenzeiger()
tracer(1)
Kannst du deinen Code bitte nochmal bei pastebin posten und hier den Link zur Verfügung stellen?