2

私は初心者プログラマーで、現在、GUI プラットフォームとして kivy を使用して Python を学習しています。

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

誰かがそれを行う方法の答えを私に提供し、ウィジェットがどのように機能するかを少し説明してくれることを願っています. pythonの標準クラスとして扱っているのですが、それとは少し違う動きをしていると思います。

乾杯。

4

1 に答える 1