Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
File where the speech is saved
-
@cvp in one of the post you write the code with that I can import my picture as the background, but you don‘t say where I must write this in my sript. Where is the place for that in my code?
-
@Python567 in my original script, replace
ui.Image.named('test:Lenna')......
By
ui.Image.named('your.jpg').....
without changing the place of the line
-
@cvp where in the skript?? IN the update def, in the init, where?
-
@Python567 did you noT see it in the update def?
-
Did you start from my last big script? Where you can add the lines for action
Or do you want a new entire script? -
@cvp I start form you last big skript. In the update def I don‘t see it. My Skript:
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.r*2,self.r*2) 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.background_image = None self.add_subview(b) self.update_interval = 1 if self.seconds else 60 ui.Image.named('IMG_1147.jpeg').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) 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('white') #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() b.action = self.action def action(self,sender): print('clock has been pressed') 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: self.back.draw(0,0,self.r * 2, self.r * 2) 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(150,seconds=True) v.add_subview(clock) v.present('sheet')
-
@cvp In the init is something, but that don‘t work with my picture
-
@Python567 in my previous post, I wrote
self.update_interval = 1 if self.seconds else 60 with ui.ImageContext(self.r * 2, self.r * 2) as ctx: ui.Image.named('test:Lenna').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)
Where the draw of image is in the context....
And you put it before 😉
-
@cvp I write this code in the init before
ui.Image.named......
Is that the right right place, because it don't work? -
@Python567 sincerely, I don't understand what you don't understand.
Please post only your def init, no more -
It should be
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.r*2,self.r*2) 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.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: ui.Image.named('IMG_1147.jpeg').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('blue') pthc.fill() h = 12 w = 5*h t = f"{datetime.datetime.now():%m/%d/%y}" x = self.r - w/2 y = self.r - r/2 pthr = ui.Path.rect(x,y,w,h) ui.set_color('white') pthr.fill() 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)-h/2 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
-
@cvp that is much more than I have before. After
with ui.Image.Context...
everything was wrong. But now we have it, 😀 -
-
sorry, but I like to joke
-
@cvp I'm too, no problem😂 Only two questions right now. 1. How can I change the size of the numbers 2. The numbers start with 0 but I want instead the 0 the 12
-
-
@Python567 said:
How can I change the size of the numbers
Instead of
h = 12
Try, but it depends on your idevice and the size of your button
h = 16
-
@cvp it works! And if i want the numbers to be thicker, what have I to do?
-
@Python567 said:
numbers to be thicker,
You have to select another font, by example 'Arial Rounded MT Bold'
-
@cvp ok great, thanks