2013-05-26 91 views
0

我試圖在for循環中製作更多標籤,但我總是遇到一個奇怪的問題。即使程序經歷了整個循環,它也不會製作所有標籤。 下面的代碼:python kivy多個標籤

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

如果有人知道我在做什麼錯了,或者你將如何解決這個問題請讓我知道。

回答

3

好的,這裏有幾件事情是錯誤的。

canvas是用於gl指令的,它的字面意思是你「繪製」你的小部件,而不是整個小部件(比如Label)。

當你創建一個小部件時,如果你希望它是可見的,你必須將它添加到父部件(本身是可見的,因爲添加到可見的父部件),在這裏我明白這些標籤的意圖是您game widget的孩子,所以改變MyWidget.draw喜歡的東西:

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

應該做你想要什麼。