2017-01-06 77 views
1

如何在不使用kv語言和.kv文件的情況下創建Kivy小部件?我是基維新手。我通常使用Tkinter,但是我發現Kivy很適合創建Android應用程序,所以我正在學習如何使用它。 我知道Kivy小部件是使用.kv文件製作的,但我想在Tkinter中創建它們。創建Kivy小部件而不使用kv語言?

# 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中?我如何在python中直接設置Kivy標籤顏色?

謝謝。

回答

3

這裏的Kivy應用的一個例子,而無需使用KV郎:

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.Appbuild實例具有返回一個主控件對象,在這種情況下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() 

我想鼓勵你仍要使用千伏郎,因爲它使代碼simplier。

2

完全可以使用python專門用kivy編寫應用程序。大約6個月前我開始使用kivy,並迅速放棄了kv文件。我不喜歡在後臺製作綁定的「神奇」代碼。我知道這是一種偏好,現在我知道小部件和佈局是如何工作的,但使用kv語言可能會更快。您需要手動執行的操作是在小部件樹中的小部件之間保留句柄,並使用kivy屬性設置綁定。有很多東西需要學習,但一旦你開始獲得它,可能性是無止境的。你發現的大多數例子都非常簡單,我覺得文檔非常有限。我覺得如果你對python感到滿意,你實際上可以更多地瞭解如果你停留在Python中,kivy是如何工作的。

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