[英]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.