我是一名新手程序員,目前我正在學習python與kivy作爲GUI平臺。瞭解基維的小工具
我正在閱讀kivy手冊,並且正在處理小部件。我想在教程畫家小部件上嘗試一些東西,但經過幾個小時的嘗試,卻未能如願。
我想要的應該很簡單。我有一個小部件,它在觸摸屏幕後創建一個隨機線。我認爲在觸摸某個區域的屏幕後重複自動添加線條會很有趣。所以我製作了一個功能,可以使小部件「注入」數據以創建更多行。
但我根本無法與小部件「溝通」。我不知道小部件的「實例」名稱是什麼。因此,我通過命名它畫家創建的實例,以及讓我們只共享代碼:
import kivy
import time
from random import random
from kivy.app import App
from kivy.clock import Clock
from kivy.uix.widget import Widget
from kivy.graphics import Color, Ellipse, Line
class MyPaintWidget(Widget):
def on_touch_down(self, touch,):
with self.canvas:
Color(random(), random(), random())
touch.ud['Line'] = Line(points=(touch.x, touch.y))
touch.ud['Line'].points += [random()*1000, random()*1000 ]
begin()
def touchme():
touch.ud['Line'].points += [random()*1000, random()*1000 ]
print 'touchme'
class MyPaintApp(App):
def build(self):
painter = MyPaintWidget()
return painter
def begin():
def my_callback(dt):
print 'begin'
painter.touchme()
Clock.schedule_interval(my_callback, 1.)
if __name__ == '__main__':
MyPaintApp().run()
希望soneone能爲我提供的是如何做到這一點的答案,也許給我解釋了一下小部件是如何工作的。我將它作爲python中的標準類來處理,但我認爲它的作用有點不同。
乾杯。
謝謝你的幫助。我確實已經發現,我正在使用在獨立函數中唯一可行的變量。我已經改變了代碼,並將指針放在構建(自定義)定義中,而不是使用畫家的工作方式...... – Shodan 2012-08-08 16:29:38