【问题标题】:How do I create a button with Kivy?如何使用 Kivy 创建按钮?
【发布时间】:2018-07-11 03:39:07
【问题描述】:

我希望最终创建一个按钮来暂停/开始/结束我作为学习练习而构建的 pong 应用程序。但是,首先要了解如何创建按钮的基础知识,并为其分配响应,我只想创建一个按钮,每次按钮状态更改时都会通知我。这是我到目前为止的python代码:

import kivy.uix.button as kb
from kivy.app import App
from kivy.uix.widget import Widget

class Button_Widget(Widget):
    def callback(instance, value):
        print('The button <%s> state is <%s>' % (instance, value))

    btn1 = kb.Button(text='Hello World 1')
    btn1.bind(on_press=callback)

class ButtonApp(App):
    def build(self):
        button = Button_Widget()
        return button

与关联的 kv 文件:

#:kivy 1.0.9

<Button_Widget>:
    size: 100, 100
    canvas:
        Rectangle:
            pos = self.pos
            size = self.size

到目前为止,我发现的唯一资源是这些(1 和2)Kivy turorials,它们并没有太大帮助。或者至少,我对他们的语言还不够了解,无法让他们发挥作用

【问题讨论】:

  • 你有什么问题?

标签: python-3.x button kivy


【解决方案1】:

让我们看看在kivy中创建按钮的最简单的代码

   from kivy.app import App
   from kivy.uix.button import Button
   class your_app_name(App):
       def build(self):
           button = Button(text="Button")
           return button
   your_app_name().run()

您还可以通过添加 on_press= function_name 向按钮添加命令或事件

【讨论】:

    【解决方案2】:

    解决方案

    在 Button_Widget() 类中,您必须重写构造函数 __init__(),以便您可以将按钮小部件添加到根小部件。详情请参考示例。

    参考文献

    Programming Guide » Kivy Basics » Create an application

    Programming Guide » Kv language

    Kivy Language

    Event dispatcher » bind() 将事件类型或属性绑定到回调。

    示例

    main.py

    ​​>
    import kivy.uix.button as kb
    from kivy.app import App
    from kivy.uix.widget import Widget
    
    
    class Button_Widget(Widget):
    
        def __init__(self, **kwargs):
            super(Button_Widget, self).__init__(**kwargs)
            btn1 = kb.Button(text='Hello World 1')
            btn1.bind(on_press=self.callback)
            self.add_widget(btn1)
    
        def callback(self, instance):
            print('The button %s state is <%s>' % (instance, instance.state))
    
    
    class ButtonApp(App):
    
        def build(self):
            return Button_Widget()
    
    
    if __name__ == "__main__":
        ButtonApp().run()
    

    button.kv

    #:kivy 1.10.1
    
    <Button_Widget>:
        size: 100, 100
        canvas:
            Rectangle:
                pos: self.pos
                size: self.size
    

    输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      相关资源
      最近更新 更多