omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    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.


    Help for widget

    Pythonista
    widgets button iphone textfield
    5
    50
    15711
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • crazy666
      crazy666 last edited by ccc

      Hello i try to lean python and i have difficulty for create widget ,

      import console
      import clipboard
      import ui
      import appex, ui
      mv = ui.View(frame=(0,0,320,420))
      mv.background_color = 'black'
      def num_inp(sender):
      	if sender.title == 'next':
      		sender.active = 1 + sender.active
      		return
      	tf_idx = sender.superview['nf'].active
      	tf = sender.superview[['brut','long','nb'][tf_idx]]
      	tf.text += sender.title
      l1 = ui.Label()
      l1.text = 'brut:'
      l1.frame = (67,2,50,20)
      l1.text_color = '#ffffff'
      mv.add_subview(l1)
      l2 = ui.Label()
      l2.text = 'long:'
      l2.frame = (65,25,50,20)
      l2.text_color = '#ffffff'
      mv.add_subview(l2)
      l3 = ui.Label()
      l3.text = 'nb:'
      l3.frame = (77,48,50,20)
      l3.text_color = '#ffffff'
      mv.add_subview(l3)
      l4 = ui.Label()
      l4.text ='palette:'
      l4.frame = (67,71,110,20)
      l4.text_color = '#ffffff'
      mv.add_subview(l4)
      l5 = ui.Label()
      l5.text = 'rouleau:'
      l5.frame = (64,94,110,20)
      l5.text_color = '#ffffff'
      mv.add_subview(l5)
      t1 = ui.TextField(name='brut')
      t1.frame = (105,2,70,20)
      mv.add_subview(t1)
      t2 = ui.TextField(name='long')
      t2.frame = (105,25,70,20)
      mv.add_subview(t2)
      t3 = ui.TextField(name='nb')
      t3.frame = (105,48,70,20)
      mv.add_subview(t3)
      
      		
      for i in range(0,5):
      	b = ui.Button()
      	b.action = num_inp
      	b.title = str(i)
      	b.frame = (180+i*40,0,54,50)
      	b.font = ("<system>",36) 
      	b.background_color = '#949494'
      	mv.add_subview(b)
      for j in range(5,10):
      	b = ui.Button()
      	b.action = num_inp
      	b.title = str(j)
      	b.frame = (-20+j*40,50,54,50)
      	b.font = ("<system>",36)
      	b.background_color = '#949494'
      	mv.add_subview(b)
      nf =ui.Button(name='nf')
      nf.title = 'next'
      nf.font = ("<system>",20)
      nf.background_color ='#c5c5c5'
      nf.action = num_inp
      nf.active = 0
      nf.frame = (5,5,50,30)
      mv.add_subview(nf)
      
      appex.set_widget_view(mv)
      
      mikael 1 Reply Last reply Reply Quote 0
      • crazy666
        crazy666 last edited by crazy666

        Sorry for my english
        I try to create widget with my code

        brut = int(input('brut:'))
        long = int(input('longueur core:'))
        nb = int(input('nb roll:'))
        skc = 73 #skid canadien#
        skus = 60 #skid usa#
        tub6 = 0.42 #core de 6 pouce#
        tub3 = 0,10 #core de 3 pouce#
        pall = brut - skc - long * tub6 * nb
        roll = pall / nb
        print('rouleau:' , roll, 'lbs')
        print('pallette:' , pall, 'lbs')
        And i try to integrate 2 switch for (skc/skus) and (tub6/tub3)
        
        1 Reply Last reply Reply Quote 0
        • stephen
          stephen last edited by stephen

          @crazy666 can you do us a favor nd pleade put ``` (three backnticks) before and after your code so it preserves _ and spacing?

          1 Reply Last reply Reply Quote 0
          • stephen
            stephen last edited by

            @crazy666

            to start what are you trying to do with your widget? from what i see itsv bunch of buttons but code fails in last two 4 loops. what are we doing with i40 and j40? shoulf it be b.frame = ((180+i)40,0,54,50)

            1 Reply Last reply Reply Quote 0
            • mikael
              mikael @crazy666 last edited by

              @crazy666, as @stephen said, hard to read or understand the code without formatting.

              Are you using active where it should be enabled?

              1 Reply Last reply Reply Quote 0
              • crazy666
                crazy666 last edited by

                Thank for help stephan ,becose i don't know how split number

                mikael 3 Replies Last reply Reply Quote 0
                • mikael
                  mikael @crazy666 last edited by mikael

                  @crazy666 said:

                  tf.text += sender.title
                  

                  This looks like it will result in: ”1” + ”2” = ”12”

                  Is that intended? Or are you expecting ”3”? In which case you need:

                  tf.text = str(int(tf.text) + int(sender.title))
                  
                  1 Reply Last reply Reply Quote 1
                  • mikael
                    mikael @crazy666 last edited by

                    @crazy666, now that it is formatted, I see that both of my earlier comments might be irrelevant.

                    What is not working?

                    1 Reply Last reply Reply Quote 0
                    • mikael
                      mikael @crazy666 last edited by

                      @crazy666, probably a typo for tub3 makes it a tuple instead of a decimal number.

                      1 Reply Last reply Reply Quote 0
                      • crazy666
                        crazy666 last edited by

                        Thanks @mikael i want create

                        https://imgur.com/W1oSZmS
                        With my calcul in my widget home page

                        1 Reply Last reply Reply Quote 0
                        • stephen
                          stephen last edited by stephen

                          @crazy666 no problem. checkout this page on markdown syntax very easy to learn and kinda fun i find.

                          this is what the ``` comes from..

                          that aside..

                          you could of used:

                          • b.frame = ((180+i)40 ,0,54,50)
                          • b.frame = (180+i*40,0,54,50)

                          difference here is first case will do 180+i=value then Rect.x=value*40 Rect being frame. * is Multiplication..

                          • second case will do oposit* i*40=value then Rect.x=180+value

                          EDIT

                          i see now that my page cought up u got this. Thank you @mikael

                          1 Reply Last reply Reply Quote 0
                          • crazy666
                            crazy666 last edited by

                            @stephen hooo nice

                            1 Reply Last reply Reply Quote 0
                            • stephen
                              stephen last edited by stephen

                              @crazy666 said:

                              • we need to check if the active TextView is last then start over or exit sequince choices. i get Seq out of range on 4th press

                              • posibly add a check to see if expected data was givin.

                              • if ⇑ is true, deactivate next and display calc or get_value to finish the problem.

                              is this the problem you are facing?

                              this will fix list outbof range:

                              
                              
                              def num_inp(sender):
                                  if sender.title == 'next':
                                      sender.active = (1 + sender.active) if (1 + sender.active) <= 2 else 0
                                      return
                              
                              
                              1 Reply Last reply Reply Quote 0
                              • crazy666
                                crazy666 last edited by

                                @stephen said:

                                is this the problem you are facing?

                                Yes , you are a genius !!!
                                1 week I search on google for that

                                stephen 1 Reply Last reply Reply Quote 0
                                • stephen
                                  stephen @crazy666 last edited by

                                  @crazy666

                                  see update to mynlast post

                                  1 Reply Last reply Reply Quote 0
                                  • crazy666
                                    crazy666 last edited by

                                    I'm trying to understand how "rect" works ,wait please
                                    ,speak french?

                                    stephen 1 Reply Last reply Reply Quote 0
                                    • stephen
                                      stephen @crazy666 last edited by

                                      @crazy666 donne-moi juste une minute pour te donner des infos

                                      1 Reply Last reply Reply Quote 0
                                      • stephen
                                        stephen last edited by

                                        @crazy666 J'espère que c'est lisible. utilisation du traducteur..

                                        Rect provient du module scene. vous pouvez également utiliser le module ui via

                                        from scene import * # importe tout à partir du module scene
                                        
                                        v= ui.View() # ui est appelé et utilisé dans la scene pour que nous l'utilisions parce que nous avons appelé 'import *' sur place
                                        

                                        From Pythonista Doc Scene.Rect(x, y, w, h)

                                        scene de classe.Rect(x, y, w, h)
                                        La classe Rect est utilisée pour les zones de délimitation et d'autres valeurs de rectangle, par exemple l'attribut Node.frame. Un rectangle est représenté par (x, y, w[idth], h[huit]), avec (x, y) comme son coin inférieur gauche.
                                        
                                        Dans la plupart des cas, Rect se comporte comme une séquence, semblable à un 4-tuple. Par exemple, vous pouvez également accéder à son composant x en utilisant la notation d'indice (r[0]). Les rectangles supportent également l'itération, le déballage des arguments, etc.
                                        
                                        Chaque fois qu'un objet Rect est utilisé comme attribut dans le module scene, vous pouvez fournir une séquence de 4 nombres (par exemple une liste ou un tuple).
                                        
                                        Rect.x
                                        Composant x du coin inférieur gauche du rectangle.
                                        
                                        Rect.y
                                        La composante y du coin inférieur gauche du rectangle.
                                        
                                        Rect.w
                                        Rect.width
                                        Largeur du rectangle.
                                        
                                        Rect.h
                                        Rect.height
                                        La hauteur du rectangle.
                                        
                                        Rect.origine
                                        Équivalent à Point(rect.x, rect.y)
                                        
                                        Rect.size
                                        Équivalent à Size (rect.w, rect.h)
                                        
                                        Rect.min_x
                                        Équivalent à min(rect.x, rect.x + rect.w) (composant x du bord gauche)
                                        
                                        Rect.max_x
                                        Équivalent à max(rect.x, rect.x + rect.w) (composant x du bord droit)
                                        
                                        Rect.min_y
                                        Équivalent à min(rect.y, rect.y + rect.h) (composant y du bord inférieur)
                                        
                                        Rect.max_y
                                        Équivalent à max(rect.y, rect.y + rect.h) (composant y du bord supérieur)
                                        
                                        Rect.center([p])
                                        Lorsqu'il est appelé sans arguments, renvoyez le centre du rectangle. Lorsqu’un point est passé en argument, les valeurs x et y du rectangle sont ajustées, de sorte que le nouveau centre du rectangle est p.
                                        
                                        Rect.Contient_point(p)
                                        Renvoie True si le point donné se trouve dans les limites du rectangle, False dans le cas contraire.
                                        
                                        Rect.Contient_rect(other_rect)
                                        Renvoie True si le rectangle donné se trouve entièrement dans les limites de ce rectangle, False dans le cas contraire.
                                        
                                        Rect.intersects(autre_rect)
                                        Renvoie True si ce rectangle se croise avec l'autre rectangle, False dans le cas contraire.
                                        
                                        Rect.intersection(other_rect)
                                        Retourne un Rect qui correspond à l'intersection de ce rectangle avec l'autre.
                                        
                                        Rect.union(autre_rect)
                                        Retourne le plus petit Rect qui contient les deux rectangles.
                                        
                                        Rect.translation(x, y)
                                        Équivalent de Rect(r.x + x, r.y + y, r.w, r.h)
                                        
                                        Rect.inset(haut, gauche[, bas, droite])
                                        Retourne un rectangle ajusté par les entrées d'arête données. inférieur/droit sont optionnels et par défaut, la valeur est la même que supérieure/gauche.
                                        
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • crazy666
                                          crazy666 last edited by

                                          Sa fait un mois que j'apprends python
                                          J'ai lu au complet sur python.org et lu un livre en anglais mais j'ai de la difficulté en anglais .j'essais d'apprendre l'anglais en meme temps 😂
                                          Et se que je trouve difficile c'est que sur internet il parle seulement de tinker et sur ios il ne la pas

                                          1 Reply Last reply Reply Quote 0
                                          • stephen
                                            stephen last edited by

                                            à peu près Rect est un carré sur l'écran en points avec Taille w, h donc ceci:

                                            from scene import *
                                            
                                            w, h=get_screen_size()
                                            box1 = Rect(w/2-50, h/2-50, 100, 100)
                                            
                                            

                                            box1 sera un rectangle de 100x100 placé au centre de l'écran.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors