2016-12-20 4 views
0

Ich muss einige Tasten rechts neben einer aktuellen GridLayout erscheinen, wenn bestimmte Aktionen ausgeführt werden.Allign-Taste links in Kivy

Ich habe versucht, eine FloatLayout mit dem ganzen Bildschirm, aber ich kann es nicht nach links mit einer relativen Position gehen (da ich mit mehr als einer Bildschirmauflösung arbeiten werde). Ich habe keinen Code, aber ich muss es von .py tun, weil es eine bestimmte Logik folgt, um zu erscheinen. ich dies in der .kv versucht haben:

FloatLayout: 
    Button: 
     size_hint: 0.4, 0.2 
     pos: root.width, root.height/2 
    GridLayout: 

POS pos_hint und halign: 'right' ändern, aber has't entweder

im Py Code arbeitete ich habe versucht, es zu der on_touch_down hinzufügen Methode so eine Schaltfläche erscheint jedes Mal wie aber es ist auch nicht

Jede Hilfe ist willkommen!

+0

Bitte schreiben einige Code von dem, was Sie versucht haben? –

+0

@toto_tico Ich habe den Code, den ich versucht habe, hinzugefügt. Es tut mir leid, dass ich noch neu bin und immer noch nicht weiß, wie man richtig Fragen stellt. – gramsch

+0

diese Koordinaten würden die Schaltfläche aus dem Bildschirm senden. Mit Code meinte ich ein vollständiges, nicht funktionierendes Beispiel, dass wir das genaue Problem replizieren können und es für die Community leichter ist, zu helfen. Ansonsten müssen wir einfach den Kontext erraten. –

Antwort

0

Ihre mathematischen Berechnungen sind falsch, Sie müssen die Breite der Schaltfläche an die x Position und die halbe Höhe davon an die y Position subtrahieren.

pos: root.width-self.width, root.height/2 - self.height/2 

Hier ist ein voll funktionsfähiges Beispiel.

from kivy.app import App 
from kivy.uix.floatlayout import FloatLayout 
from kivy.lang import Builder 

Builder.load_string(''' 
<Base>: 
    FloatLayout: 
     Button: 
      size_hint: 0.4, 0.2 
      pos: root.width-self.width, root.height/2 - self.height/2 
      text: 'hola' 
    GridLayout: 
     cols: 2 
     Label: 
      text: 'A' 
     Label: 
      text: 'B' 
''')  

class Base(FloatLayout): 
    pass 

class BaseApp(App): 
    def build(self): 
     return Base() 

BaseApp().run() 

Dies ist jedoch leichter mit pos_hint zu erreichen:

pos_hint: {'right': 1, 'center_y': .5} 

So, wie folgt aus:

from kivy.app import App 
from kivy.uix.floatlayout import FloatLayout 

from kivy.lang import Builder 


Builder.load_string(''' 
<Base>: 
    FloatLayout: 
     Button: 
      size_hint: 0.4, 0.2 
      pos_hint: {'right': 1, 'center_y': .5} 
      text: 'hola' 
    GridLayout: 
     cols: 2 
     Label: 
      text: 'A' 
     Label: 
      text: 'B' 
''')  

class Base(FloatLayout): 
    pass 

class BaseApp(App): 
    def build(self): 
     return Base() 

BaseApp().run()