2017-01-06 26 views
1

kv言語と.kvファイルを使用せずにKivyウィジェットを作成するには?私はキビには新しいです。私は通常Tkinterを使用していますが、KivyがAndroidアプリを作成するのに適していることがわかったので、使い方を学んでいます。 Kivyウィジェットは.kvファイルを使って作成されていますが、私はTkinterのウィジェットのように作成したいと思います。kv言語を使用せずにKivyウィジェットを作成しますか?

# 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

ここKVラングを用いず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() 
build

基本的方法kivy.app.Appのインスタンスがkivy.uix.Labelインスタンスこの場合、メインウィジェットオブジェクトを返しています。より複雑なウィジェットを作成するには、いくつかのレイアウトクラスのサブクラスを作成してからadd_widgetメソッドを使用してウィジェットを追加する必要があります。

これはコードを簡潔にするため、とにかくkv langを使用することをお勧めします。

2

pythonをkivyでアプリを書くために使うことは完全に可能です。私は約6ヶ月前にkivyを使い始め、すぐにkvファイルを放棄しました。私は背景にバインディングを作る "魔法の"コードが好きではありません。私はこれが好みのものであることを知っているので、ウィジェットとレイアウトの仕組みを知ったので、実際にkv言語を使う方が早いかもしれません。手動で行う必要があることは、kivyプロパティを使用して、ウィジェットツリー全体のウィジェットとセットアップバインディング間のハンドルを保持することです。学ぶことはたくさんありますが、一度それを得ると、可能性は無限にあります。あなたが見つけるほとんどの例は非常にシンプルであり、ドキュメンテーションが非常に限られていると感じています。私はあなたがPythonに慣れていれば、あなたがPythonにとどまっていれば、Kivyがどのように機能するかを実際に知ることができると感じています。

私はNykakinの答えを正しいとマークしていますが、私はちょっとした詳細を分かち合うと思っていました。

関連する問題