0
PythonとKivyを使用して単純なラベルを画面に追加しようとしています。私はBuilder.load_string()メソッドを使用してそれを行う方法を知っていますが、私はPythonを通してKivyライブラリを使用してそれをやりたいと思います。Python Kivy、Pythonで画面にラベルを追加できません
次のコードを実行すると、空の紫色の画面が表示されますが、ラベルをBuilder.load_string()メソッドに挿入すると正常に動作します。私は間違って何をしていますか?
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.screenmanager import ScreenManager, Screen
Builder.load_string("""
<HomePage>:
FloatLayout:
canvas.before:
Color:
rgb: .5,0,.75
Rectangle:
size: self.size
""")
class HomePage(Screen):
layout = FloatLayout()
home_title = Label(text="text")
layout.add_widget(home_title)
class LabelApp(App):
def build(self):
sm = ScreenManager()
sm.add_widget(HomePage(name='home'))
return sm
if __name__ == "__main__":
LabelApp().run()
[OK]を、今私はちょうどDEFを使用してみました。私は何かが働いていた理由を理解する必要があります__その中に__( AttributeError: 'HomePage'オブジェクトに '_trigger_layout'属性がありません 次に余分な行を追加しましたが、なぜ問題が修正されたのか分かりません。私は以下に示すスーパーラインを追加し、それを下のScreen.initラインに置き換えようとしました。両方とも働いた、なぜか? スーパー(ホームページ、自己).__ init __(** kwargs) Screen .__ init __(self) – jdanaher
@jdanaherは、「super」を呼び出してください。例[kivyの基本ガイド](https://kivy.org/docs/guide/basic.html#customize-the-application)を参照してください。 – zeeMonkeez
ありがとう、それはかなり参考にされた読書でした! Screenクラスをオーバーロードする各画面でsuperを呼び出すことはできますか? – jdanaher