2016-12-20 43 views
0

當需要執行某些操作時,需要在當前的GridLayout的右側出現幾個按鈕。在基維左側的Allign按鈕

我已經嘗試了整個屏幕的FloatLayout,但我不能讓它與左邊的相對位置(因爲我將與多個屏幕分辨率一起工作)。 我沒有代碼,但我必須從.py這樣做,因爲它遵循某種邏輯出現。 我已經試過這在.kv:

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

中的.py代碼改變POS到pos_hinthalign: 'right'但has't工作要麼

我試着將它添加到on_touch_down方法所以一個按鈕每次出現像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()