从Kivy的另一个小部件获取属性

时间:2017-08-04 23:21:25

标签: python kivy kivy-language

如何在其他小部件中使用属性? 我有这段代码:

Python文件

class Control(ToggleButton):
    width_multiplier = NumericProperty(1)


class MainScreen(StackLayout):
    pass


class HomeControl(App):

    def build(self):
        return MainScreen()


if __name__ == '__main__':
    HomeControl().run()

KV档案

<Control>:
    size_hint: None,None
    height: '100dp'
    width: self.width_multiplier * self.height + (self.width_multiplier - 1) * spacing
    halign: 'center'

<MainScreen>:
    orientation: 'lr-tb'
    spacing: '10dp'
    padding: '15dp'

    Control:
        text: 'Button'

    Control:
        text: 'Long Button'
        width_multiplier: 2

Control窗口小部件的宽度应该是窗口小部件高度的width_multiplier倍加上MainScreen子节点之间的间距。如何在MainScreen角色中使用Control的间距属性? 我是Kivy的新手,所以这可能是一个愚蠢的问题,但我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

在您的情况下,您可以使用属性

<Control>:
    size_hint: None,None
    height: '100dp'
    width: self.width_multiplier * self.height + (self.width_multiplier - 1) * self.parent.spacing[0]  <--- 
    halign: 'center'