1

for ループでより多くのラベルを作成しようとしていますが、常に奇妙な問題が発生します。プログラムは for ループ全体を通過しますが、すべてのラベルを作成するわけではありません。コードは次のとおりです。

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.label import Label

class MyWidget(Widget):
    def draw(self):
        with self.canvas:           

            for i in range(6):
                print('I draw label')
                Label(text = 'hello', pos=(i*100, 100))
class MyApp(App):
    def build(self):
        game = MyWidget()
        game.draw()
        return game

if __name__ == '__main__':
    MyApp().run()

私が間違っていること、または問題をどのように解決するかを誰かが知っている場合は、お知らせください。

4

1 に答える 1

3

わかりました、ここでいくつか間違っています。

canvas は gl 命令用です。文字通り、ウィジェット全体ではなく、ウィジェットを「ペイント」する場所です (Label のように)。

ウィジェットを作成するとき、それを表示したい場合は、それを親ウィジェットに追加する必要があります(表示される親に追加されるため、それ自体が表示されます)。ここで、これらのラベルがgameウィジェットの子になることを意図していることを理解しています、 MyWidget.draw を次のように変更します。

    def draw(self):
        for i in range(6):
            print('I draw label')
            self.add_widget(Label(text='hello', pos=(i*100, 100))

あなたがしたいことをするべきです。

于 2013-05-26T10:22:10.497 に答える