官术网_书友最值得收藏!

  • Kivy Cookbook
  • Hugo Solis
  • 346字
  • 2021-07-16 20:39:55

Accessing widgets defined inside the Kv language in your Python code

This recipe will teach you how to access definitions inside the Kv language in your Python code and vice versa.

Getting ready

This recipe will use button, a very common widget that we also used in the last recipe.

How to do it…

This recipe follows as:

  1. Make a rule for the widget.
  2. Define a button.
  3. Give it an ID.
  4. Define the label for the button.
  5. In the action, call a method in the Python code:
    <MyW>:
        Button:
            id: b1
            text: 'Press to smash'
            on_release: root.b_smash()
  6. Create the Python code with the method:
    import kivy
    kivy.require('1.8.0') # replace with your current kivy version !
    
    from kivy.app import App
    from kivy.uix.widget import Widget
    
    class MyW(Widget):
        def b_smash(self):
            self.ids.b1.text = 'Pudding'
    
    class e7App(App):
        def build(self):
            return MyW()
    
    if __name__ == '__main__':
        e7App().run()

How it works…

In the Kv Language file, we have the following in the first line:

<MyW>:

This is the name of the widget, a simple button. The second line is:

Button:

This is the button definition. The third line is:

id: b1

This gives the button an ID b1. The fourth line is:

 text: 'Press to smash'

This makes the initial text on the button 'Press to smash'. The fifth line is:

 on_release: root.b_smash()

The preceding line is making a call to the Python code; it refers the method b_smash() of the root class MyW.

The fifth line in the Python code is:

class MyW(Widget):

This is the definition of the class related to the Widget. The sixth line is:

def b_smash(self):

This defines the method b_smash(), which is accessed by the Kv language file. The seventh line is:

self.ids.b1.text = 'Pudding'

This accesses the widget defined in the Kv language file, specifically the button with its ID, and changes the text displayed in the button to the text Pudding.

See also

If you want to run your interface, take a look at our recipe Running your code, and to get more details about widgets, see the recipes in Chapter 4, Widgets.

主站蜘蛛池模板: 宿迁市| 安龙县| 浙江省| 玛多县| 紫阳县| 巴林左旗| 敦煌市| 锦屏县| 德清县| 孟村| 小金县| 双鸭山市| 浪卡子县| 沁阳市| 嘉义市| 东乡县| 清水河县| 蓬溪县| 平阳县| 贵定县| 沁源县| 屏东县| 阜宁县| 布尔津县| 阜阳市| 汕尾市| 灵台县| 浦城县| 海口市| 青龙| 营口市| 宜章县| 格尔木市| 宣化县| 长岭县| 衡阳县| 南安市| 五华县| 东平县| 长治市| 阿克陶县|