2016-12-20 3 views
0

特定の操作が実行されたときに、現在のGridLayoutの右側に表示するボタンを2つ作る必要があります。Kivyの左にあるボタンを調整

全画面でFloatLayoutを試しましたが、複数の画面解像度で作業するため、相対位置で左に移動することができません。 コードはありませんが、特定のロジックが表示されるので、.pyから行う必要があります。 私は.kvでこれを試してみた:

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

pos_hinthalign: 'right'にPOSを変更するが、私はon_touch_downに追加しようとしたの.pyコードで

のいずれかを働いたhas'tボタンを押すたびにボタンが表示されますboton = Button(text='caca', pos=self.width - root.x, root.height/2)

何か助けてください!

+0

あなたがしようとしているもののいくつかのコードを投稿してください? –

+0

@toto_tico私が試したコードを追加しました。申し訳ありません。私はまだこれが初めてで、まだ質問を正しく行う方法がわかりません。 – gramsch

+0

これらの座標はボタンを画面外に送ります。コードでは、正確な問題を再現することができ、コミュニティーが手助けするのがより簡単であることを意味しています。それ以外は、単に文脈を推測しなければなりません。 –

答えて

0

数値計算が正しくないため、ボタンの幅をxの位置に、その半分の高さをyの位置に引く必要があります。

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

完全な実例があります。

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() 

これは、pos_hintで達成することが容易です:

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

ので、このように:

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() 
関連する問題