本文介绍了如何从kivy文件(.kv)访问不同的类ID /部件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道些什么?


  1. 如果有ID按钮:button_b(Get_Boys类)被释放,然后用ID标签:label_g(Get_Girls类)必须改变

  2. 如果按键采用ID:button_b(Get_Boys类)是pressed,然后用ID标签:root_lbl(Get_People类)必须改变

  3. 如果按键采用ID:root_btn(Get_People类)被释放,然后用ID标签:label_b(Get_Boys类)必须改变

这是在this链接,而不是从来看初学者的角度。

我有2个文件


  1. test.py

  2. dates_test.kv

test.py

 类Get_People(BoxLayout的):
    高清__init __(自我,** kwargs):
        超(Get_People,个体经营).__的init __(** kwargs)
类Get_Boys(BoxLayout的):
    高清__init __(自我,** kwargs):
        超(Get_Boys,个体经营).__的init __(** kwargs)类Get_Girls(BoxLayout的):
    高清__init __(自我,** kwargs):
        超(Get_Girls,个体经营).__的init __(** kwargs)类TestApp(APP):
    高清版本(个体经营):
        self.load_k​​v('dates_test.kv')
        返回Get_People()

dates_test.kv文件

 < Get_People计算值:
    方向:垂直
    按钮:
        名称:root_btn
        ID:root_btn
        文字:我的根按钮
        on_release:change_label_b
    标签:
        ID:root_lbl
        文字:我的根标签
    Get_Boys:
    Get_Girls:&所述; Get_Boys计算值:
    按钮:
        ID:button_b
        文字:按钮男孩
        ON_ preSS:change_label_root
        on_release:change_label_g
    标签:
        ID:label_b
        文字:标签男孩&所述; Get_Girls计算值:
    按钮:
        ID:button_g
        文字:巴顿女孩
    标签:
        ID:label_g
        文字:标签的女孩


解决方案

嘛!看起来像我自己找到了答案,我想与大家分享吧。

首先让我们给ID,在dates_test.kv文件。这样就可以在python code或.kv文件访问它们。

 < Get_People计算值:
    stuff_p:root_lbl
    ...
    Get_Boys:
        编号:GB
    Get_Girls:
        ID:GG&所述; Get_Boys计算值:
    stuff_b:label_b&所述; Get_Girls计算值:
    stuff_c:label_g

你可能想知道什么是stuff_p,stuff_b和stuff_c ???

他们OBJECTPROPERTY在自己的类中定义。对于容易的份上,你可以把它们作为C语言的指针,您在stuff_b在你的Python code的变化使得label_b变化你kivy文件已经链接。

 类Get_People(BoxLayout的):
    stuff_p = OBJECTPROPERTY(无)
    ...类Get_Boys(BoxLayout的):
    stuff_b = OBJECTPROPERTY(无)
    ...类Get_Girls(BoxLayout的):
    stuff_c = OBJECTPROPERTY(无)
    ...

对于1部分和第二部分

In the Get_Boys class (test.py) define these methods.

def change_girl(self):

    self.parent.ids.gg.stuff_c.text = "Boys changed Girls!"
    #self.stuff_b.text = "i changed myself!"

def change_people(self):
    self.parent.ids.root_lbl.text = "Boys changed people!"

let's see what happened here...

self.parent.ids.gg.stuff_c.text = "Boys changed Girls!"

  1. self.parent refers to Get_Parent class.
  2. .ids.gg refers to the id that we created above for Get_Girls.
  3. .stuff_c is used to refer label_g (above) in Get_Girls class.
  4. .text is used to change the text in the label.

and in the .kv file

<Get_Boys>:
    stuff_b: label_b
    Button:
        id: button_b
        text: "button 1"
        on_release: root.change_girl()
        on_press: root. change_people()

For Part 3

in the Get_People class (test.py) define a method.

def rooted(self):
    self.ids.gb.stuff_b.text = "people changed boys!"

and in .kv file

Button:
    id: root_btn
    text: "I am Root"
    on_release: root.rooted()

这篇关于如何从kivy文件(.kv)访问不同的类ID /部件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-01 15:31