簡體   English   中英

是否在不使用kv語言的情況下創建Kivy小部件?

[英]Create Kivy widgets without using kv language?

如何在不使用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,因為它使代碼更簡單。

完全可以使用python來編寫帶有kivy的應用程序。 我大約六個月前開始使用kivy,並很快放棄了kv文件。 我不喜歡在后台進行綁定的“神奇”代碼。 我知道這是優先事項,現在我知道小部件和布局的工作方式,實際上使用kv語言可能更快。 您需要手動執行的操作是在整個小部件樹中保持小部件之間的句柄,並使用kivy屬性設置綁定。 有很多東西要學習,但是一旦您開始學習,可能性是無窮的。 您發現的大多數示例都很簡單,我認為文檔非常有限。 我覺得,如果您對python感到滿意,那么實際上,如果您繼續使用python,將會真正了解更多有關kivy的工作原理。

我將Nykakin的答案標記為正確,但我只是想分享一些細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM