这是我们关于Kivy速成课程的第三篇文章,在这篇文章中,我们将学习如何在Kivy中创建带有回调的按钮。按钮是一个带有相关动作的标签,如按钮被按下(或在点击/触摸后释放)。要配置按钮,将使用与Label类相同的属性(padding, font_size等))和大小调整系统。

在kivy中创建按钮有两种方式,第一种方式是使用kivy.uix.button模块创建按钮。第二种方法是使用kivy设计语言,我们先做第一种方法。我还将向您展示如何为kivy按钮创建回调。

这是kivy中创建按钮的代码。

from kivy.app import App
from kivy.uix .button import Button

class Window(App):
    def build(self):
        button = Button(text = "点击这里 - Linux迷 www.linuxmi.com")
        button.bind(on_press = self.click_me)
        return button

    def click_me(self, value):
        print("Hello World - Linux迷 www.linuxmi.com")

if __name__ == "__main__":
    window = Window()
    window.run()

在上面的代码中你可以看到,首先我们已经从kivy导入了我们需要的类,基本上我们将使用App类和按钮类。之后,我们创建了从App类扩展的窗口类。App类是任何kivy应用程序的起点。

相关阅读:Kivy中文乱码的解决方法  见  https://www.linuxmi.com/kivy-zhongwenluanma.html

这是我们想要的方法当用户点击按钮时,我们会在控制台打印一些东西。

def click_me(self, value):
print(“Hello World – Linux迷 www.linuxmi.com”)

此方法返回窗口内容。在这个例子中,一个简单的按钮,你也可以看到我们附加了一个回调按钮。当按钮被按下(点击/触摸)时附加一个回调,使用bind

 def build(self):
        button = Button(text = "点击这里 - Linux迷 www.linuxmi.com")
        button.bind(on_press = self.click_me)
        return button

现在,如果您运行完整的代码,结果将是一个覆盖所有窗口的大按钮,这是因为我们没有指定按钮的大小,我们将在使用kivy设计语言创建按钮时这样做。

效果图如下:

现在让我们用kivy设计语言创建按钮,下面是我们的Python代码。

from kivy.app import App
from kivy.uix.widget import Widget

class LinuxmiWidget(Widget):
    pass

class LinuxMi(App):
    def build(self):
        return LinuxmiWidget()

if __name__ == "__main__":
    window = LinuxMi()
    window.run()

您可以看到在顶部我创建了一个新类,这个类是从Widget基类扩展而来的,现在创建Widget类是个好主意。现在我还没有在这个类中添加任何东西,但我们会在这个类中添加这个按钮的回调,同时我们在主窗口类中返回了这个类。

#:kivy 1.10.0

<LinuxmiWidget>:

    Button:
        text: "点击这里 - Linux迷 www.linuxmi.com"
        pos: 200, 100
        size: 420, 50
        color: .5,.7,1,1
        font_size: 25

这是我们的kivy文件,确保你的kivy文件名是linuxmi.kv,因为我们的主类是LinuxMi。

首先在kivy文件中添加了kivy版本,此后,我们将编写要定义规则的类,在本例中为LinuxmiWidget。 并且我们为按钮添加了一些属性,例如位置,大小,颜色和字体大小。 还要注意你的kivy文件缩进。

如果您运行代码,结果如下:

现在,我们为按钮添加回调,让我们更改Python文件,并在LinuxmiWidget类中为回调添加一个新方法,如下所示。 我们将通过按钮在kivy文件中连接此方法。

from kivy.app import App
from kivy.uix.widget import Widget

class LinuxmiWidget(Widget):

    def click_me(self):
        print("你点击了我 www.linuxmi.com ...")
        self.mylabel.text ="单击后更改标签 - www.linuxmi.com"

class LinuxMi(App):
    def build(self):
        return LinuxmiWidget()

if __name__ == "__main__":
    window = LinuxMi()
    window.run()

您可以看到我们在类中添加了一个新方法,并且当用户单击按钮时,标签文本将被更改。

现在,这是我们更新的kivy文件。 因此,此文件中的新内容是,我们添加了标签的新小部件,还为标签添加了id,之后您需要在LinuxmiWidget规则中引用标签。 您还可以看到我们按钮中有一个新内容,那就是on_press。

#:kivy 1.10.0

<LinuxmiWidget>:
    mylabel:label
    Button:
        text: "点击这里 - Linux迷 www.linuxmi.com"
        pos: 200, 100
        size: 420, 50
        color: .6,.7,2,3
        font_size: 25
        #on_press: 按下按钮时在控制台打印(点击这里 - Linux迷 www.linuxmi.com)
        on_press: root.click_me()

    Label:
        id:label
        text: "标签在这里"
        pos:380,200
        font_size: 20

如果您运行代码,结果如下:

发表评论

电子邮件地址不会被公开。 必填项已用*标注