• @rxvan, the package that contains attr.s is installed with pip install attrs (note the s) and imported with attr (no s). There is also a package called attr which is also imported with attr but does not contain attr.s.

    Looks like you have the wrong one. Try removing that and installing attrs.

  • @JeremyMH a foundation vote that proposed @enceladus but without the editor UI

    import ui class StopWatch(ui.View): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.value = 0 self.state = 'stop' self.update_interval = .1 def draw(self): t0 = (self.value // (600 * 60), self.value // 600, self.value // 10) t1 = (t0[0], t0[1] % 60, t0[2] % 60) ui.draw_string( "{:02}:{:02}:{:02}".format(*t1), font=('Helvetica', 20), rect=(150, 0, 0, 0), color='black', alignment=ui.ALIGN_CENTER) def update(self): if self.state == 'run': self.value += 1 self.set_needs_display() def button_action(sender): v1 = sender.superview['Watch'] sender.hidden = True if sender.title == 'Reset': v1.value = 0 v1.state = 'stop' sender.superview['Start'].hidden = False elif sender.title == 'Start': v1.value = 0 v1.state = 'run' sender.superview['Stop'].hidden = False elif sender.title == 'Stop': v1.state = 'stop' sender.superview['Reset'].hidden = False v = ui.View(width=397, height=271) v.add_subview(StopWatch(name = 'Watch', frame = (0, 30, 345.00, 76.00))) v.present('sheet') for btn in ['Reset', 'Stop', 'Start']: v.add_subview(ui.Button(frame=(v.center.x-40, v.center.y-40, 80, 80), name=btn, border_width=1, corner_radius=40, action=button_action)) v[btn].title = btn if btn != 'Start': v[btn].hidden = True```
  • @Luximonsti, you could also share the code you have so far.

  • @JonB said:

    instead of creating the context as nsdata.

    I added the file lines only to test /check pdfdata.

  • @Alkaar the beta version solves that, I think

    Fixed an issue with the extra key row hiding console input on 2018 iPad Pros.
  • Quicker than me (just wake up), I wanted to post this link

  • @dgelessus As with only two lines, get_services() and get_keychain(), you can get the data of keychain memory, I never shall store there sensitive data, without a real password protection. I only wanted to store my parameters without using a file that the user could remove by accident.
    About Python dictionary, I recognize I don't know a lot about it.Thanks for the info.

  • Here's simple video and __main__ docs. As @Amegon already said, run script via play button.

    P.S. There's no shell, but there's StaSh.

  • You will not get out of the Pythonista app sandbox, or out of your application sandbox if you deploy via XCode. That is, you can control the volume while your application is running, but not set some new system-wide limit otherwise.

    Unless you're targeting jailbroken devices, in which case you can probably do a lot through the ObjC bridge, but then I would think that maybe Python is not your effective starting point.

Internal error.

Oops! Looks like something went wrong!