@cvp here my code:
````
import ui
import datetime
from math import pi,cos,sin
class ClockButton(ui.View):
def init(self, r, seconds=True, args, kwargs):
super().init(args, kwargs)
self.r = r
self.seconds = seconds
self.background_color = 'white'
self.frame = (0,0,self.r2,self.r2)
b = ui.Button(name='clock')
b.frame = (0,0,self.width,self.height)
b.corner_radius = self.width/2
b.border_color = 'black'
b.border_width = 1
b.bg_color = 'lightgray'
b.title = ''
b.tint_color = 'red'
#b.action = self.action
#def action(self, sender):
#print('Uhr wurde gedrückt')
b.background_image = None
self.add_subview(b)
self.update_interval = 1 if self.seconds else 60
with ui.ImageContext(self.r * 2, self.r * 2) as ctx:
pthc = ui.Path.oval(self.r*0.9,self.r*0.9,self.r*0.2,self.r*0.2)
ui.set_color('black')
pthc.fill()
h = 10
for i in range(12):
a = pi/2 - 2 * pi * i/12.0
x,y = self.r+cos(a)*(self.r*0.85)-h/2, self.r-sin(a)*(self.r*0.85)-h/2
ui.draw_string(str(i),rect=(x,y,20,h),font=('Menlo',h), color='white')
self.back = ctx.get_image()
#ui.draw_string(t,rect=(x,y,w,h),font=('Menlo',h), color='black')
#for i in range(12):
#a = pi/2 - 2 * pi * i/12.0
#x,y = self.r+cos(a)*(self.r*0.85)-h/2, self.r-sin(a)*(self.r*0.85)-h2
#ui.draw_string(str(i),rect=(x,y,2*h,h),font=('Menlo',h), color='white')
#self.back = ctx.get_image()
#b.action = self.action
def action(self, sender):
print('Uhr wurde gedrückt')
def update(self):
t = datetime.datetime.now()
tick = -2 * pi / 60.0
seconds = t.second + t.microsecond/1000000.0
minutes = t.minute + seconds/60.0
hours = (t.hour % 12) + minutes/60.0
with ui.ImageContext(self.r * 2, self.r * 2) as ctx:
ui.Image.named('IMG_1147.jpeg').draw(0,0,self.r * 2, self.r * 2)
self.back.draw(0,0,self.r * 2, self.r * 2)
pthc = ui.Path.oval(self.r*0.9,self.r*0.9,self.r*0.2,self.r*0.2)
ui.set_color('black')
pth = ui.Path()
ui.set_color('white')
pth.line_width = 2
# hours
lh = 0.6 # length of hours hand
ah = -pi/2 + hours*(2*pi/12) # angle of hours hand
pth.move_to(self.r,self.r)
pth.line_to(self.r*(1+lh*cos(ah)),self.r*(1+lh*sin(ah)))
# minutes
lm = 0.9 # length of minutes hand
am = -pi/2 + minutes*(2*pi/60) # angle of minutes hand
pth.move_to(self.r,self.r)
pth.line_to(self.r*(1+lm*cos(am)),self.r*(1+lm*sin(am)))
pth.stroke()
# seconds
if self.seconds:
lt = 0.9 # length of seconds hand
at = -pi/2 + seconds*(2*pi/60) # angle of seconds hand
pths = ui.Path()
ui.set_color('red')
pths.move_to(self.r,self.r)
pths.line_to(self.r*(1+lt*cos(at)),self.r*(1+lt*sin(at)))
pths.stroke()
ui_image = ctx.get_image()
self['clock'].background_image = ui_image
v = ui.View()
v.background_color = 'white'
v.frame = (0,0,400,400)
clock = ClockButton(94,seconds=True)
v.add_subview(clock)
v.present('sheet')