2017-01-06 8 views
1

Как создать виджеты Kivy без использования файлов kv и .kv? Я новичок в киви. Я обычно использую 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 

Итак, есть ли способ сделать виджеты Kivy полностью в python? Как я могу установить цвет ярлыка Kivy непосредственно в python?

Спасибо.

ответ

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() 

В основном build метод kivy.app.App экземпляр имеет возвращать главный объект виджета, в этом случае 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 в любом случае, так как он делает код более простым.

2

Полностью можно использовать python исключительно для написания приложений с kivy. Я начал использовать kivy около 6 месяцев назад и быстро отказался от файлов kv. Мне не нравится «волшебный» код в фоновом режиме, создающий привязки. Я знаю, что это предпочтение, и теперь, когда я знаю, как работают виджеты и макеты, может быть, на самом деле быстрее использовать язык kv. Вещи, которые вам нужно сделать вручную, - держать ручки между виджетами в дереве виджета и устанавливать привязки с использованием свойств kivy. Существует много, чтобы учиться, но как только вы начнете его получать, возможности бесконечны. Большинство примеров, которые вы найдете, очень просты, и я считаю, что документация очень ограничена. Я чувствую, что если вам будет удобно с python, вы действительно узнаете больше о том, как работает киви, если вы останетесь на python.

Я правильно оцениваю ответ Найкакина, но я просто подумал, что поделился некоторыми деталями.

 Смежные вопросы

  • Нет связанных вопросов^_^