Skip to main content
 首页 » 编程设计

python之不使用 kv 语言创建 Kivy 小部件

2025年05月04日15kuangbin

如何在不使用 kv 语言和 .kv 文件的情况下创建 Kivy 小部件?我是基维的新手。我通常使用 Tkinter,但我发现 Kivy 非常适合创建 Android 应用程序,所以我正在学习如何使用它。 我知道 Kivy 小部件是使用 .kv 文件制作的,但我想像 Tkinter 中的小部件一样创建它们。

# Creating widgets in tkinter: 
# We'll assume tkinter is imported as tk     
 
label_1 = tk.Label(text='Hello World', bg='white') 
label_1.pack() 
 
# Creating widgets using Kivy in .py file 
 
label_1 = Label(text='Hello World')  # eg. Not able to set color! 
add_widget(label_1) 
 
# Creating widgets using kv language 
 
Label: 
    text: "Hello World" 
    color: 1,0,0,1   

那么,有什么办法可以完全用python制作Kivy小部件吗?我如何直接在 python 中设置 Kivy 标签颜色?

谢谢。

请您参考如下方法:

下面是一个不使用 kv lang 的 Kivy 应用程序示例:

from kivy.app import App 
from kivy.uix.label import Label 
 
 
class TestApp(App): 
    def build(self): 
        return Label( 
            text='Hello, world', 
            color=(1, 0, 0, 1) 
        ) 
 
 
TestApp().run() 

基本上 kivy.app.App 实例的 build 方法返回了一个主要的小部件对象,在本例中是一个 kivy.uix.Label实例。要拥有更复杂的小部件,您应该创建一些布局类的子类,然后使用 add_widget 方法添加小部件。

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.boxlayout import BoxLayout 
 
 
class TestWidget(BoxLayout): 
    def __init__(self, **args): 
        super(TestWidget, self).__init__(**args) 
        label = Label( 
            text='Hello, world', 
            color=(1, 0, 0, 1)) 
        self.add_widget(label) 
 
 
class TestApp(App): 
    def build(self): 
        return TestWidget() 
 
 
TestApp().run() 

无论如何我都鼓励你使用 kv lang,因为它使代码更简单。