2014-10-07 88 views
1

我有一個x和y位置的數組。我想要顯示這些點連續爲每個點連線,然後創建一個動畫。它就像一條路徑追蹤的線索。我正在使用python-kivy嘗試顯示它。Kivy上的動畫畫布Line

我在谷歌找不到任何幫助。

有一個觸發此動畫的按鈕。

from kivy.app import App 
from kivy.uix.widget import Widget 
from kivy.graphics.vertex_instructions import Line 
from kivy.graphics.context_instructions import Color 
from time import sleep 

x_moves = [250, 250.4305, 249.8804, 246.0923, 239.7496, 233.8188, 225.7797, 215.8385, 205.8413, 196.6497, 189.7026, 181.2445, 174.9816, 171.9882, 166.1171, 161.6505, 159.9929, 161.1338, 164.853, 168.2874, 170.768, 178.6918, 184.5233, 190.0262, 195.607, 202.0255, 210.5954, 216.1031, 219.6285, 224.9134, 230.2314, 237.7017, 243.7408, 250.5839, 256.2949] 
y_moves = [250, 240.0093, 230.0244, 220.7697, 213.0386, 204.9872, 199.0396, 197.9567, 197.7209, 201.6598, 208.8527, 214.1875, 221.9834, 231.5249, 239.62, 248.567, 258.4287, 268.3634, 277.6461, 287.0379, 296.7253, 302.8256, 310.9492, 319.299, 327.5969, 335.2652, 340.4185, 348.7651, 358.1231, 366.6125, 375.0812, 381.7291, 389.6996, 396.9915, 405.2003] 

class my_App(App): 
    def build(self): 
     self.widget = Widget() 
     self.widget.on_touch_down = self.touch 
     with self.widget.canvas: 
      Color(0, 1, 0, 1) #just initial config 
      Line(points = [0,0,500,0,500,500,0,500], close = True) #just initial config 
     return self.widget 

    def touch(self, touch): #executes the animation 
     pts = [] 
     for i in range(len(x_moves)): 
      pts.append(x_moves[i]) 
      pts.append(y_moves[i]) 
      self.widget.canvas.add(Line(points = pts)) 
      sleep(0.1) 

if __name__ == '__main__': 
    obj = my_App() 
    obj.run() 

這是我的代碼,不起作用。但是,這是主意。

+0

添加錯誤信息?即時通訊不知道我確切地明白什麼是工作 – pianist1119 2014-10-07 18:56:48

+0

實際上,代碼的作品,但以這種方式,動畫不顯示。只有在循環運行後,畫布纔會更新。 – 2014-10-07 20:18:48

+1

thankyou :)多數民衆贊成那種事情,你應該包括在問題 – pianist1119 2014-10-08 01:02:12

回答

2

由於您的功能沒有返回並且您使用sleep(),因此您將阻止用戶界面更新。出於顯而易見的原因,當您的代碼運行時,Kivy無法做任何事情。如果您想在運行更多代碼之前等待,可以使用Kivy的Clock。然後Kivy將能夠更新屏幕。

但是,你應該看看基維的Animation,這是爲了做得更好。

+0

是啊...睡覺()有一個愚蠢的事情。我只是想清楚這個想法。但很高興聽到'時鐘',我無法找到一種方法來實現'動畫'的方式來解決問題。我會嘗試'時鐘'並提供反饋。 – 2014-10-07 21:34:52

+0

時鐘工作。謝謝! – 2014-10-07 22:21:58