当执行某些操作时,我需要在当前GridLayout
的右侧显示几个按钮。
我在整个屏幕上尝试了FloatLayout
,但我不能让它以相对位置向左移动(因为我将使用多个屏幕分辨率)。
我没有代码,但我必须从.py
开始,因为它遵循一定的逻辑出现。
我在.kv中试过这个:
FloatLayout:
Button:
size_hint: 0.4, 0.2
pos: root.width, root.height / 2
GridLayout:
将pos更改为pos_hint
和halign: 'right'
,但无法正常工作
在.py代码中我尝试将其添加到on_touch_down
方法,因此每次都会显示一个Button boton = Button(text='caca', pos=self.width - root.x, root.height / 2)
但它不是
欢迎任何帮助!
答案 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()