0

私は Kivy を初めて使用します。チュートリアルを完了した後の次のステップは、1 つのアプリケーションに 2 つのチュートリアルのウィジェットを追加することでした。クラス CombWidget は、Paint ウィジェットと PingPong ウィジェットが追加される私のウィジェットになります。中間ステップでは、BoxLayout が追加され、

  1. いくつかのボタン
  2. マイペイントウィジェット

BoxLayout で。

描画を MyPaintWidget のみに制限するには、if ステートメントを追加しました

def on_touch_move(self, touch):
    if self.collide_point(touch.x, touch.y):
        touch.ud['line'].points += [touch.x, touch.y]

線は、ボタンのすぐ上の小さなスポットにのみ描画されます。ドットは、ボタンを除くすべての場所に描画されます。ボタンもクリックに反応しなくなりました。

コード:

from random import random
from kivy.app import App
from kivy.graphics import Color, Ellipse, Line
from kivy.uix.button import Button
from kivy.uix.widget import Widget

class CombWidget(Widget):
    pass
class MyPaintWidget(Widget):

def on_touch_down(self, touch):
    color = (random(), 1, 1)
    with self.canvas:
        Color(*color, mode='hsv')
        d = 30.
        Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
        touch.ud['line'] = Line(points=(touch.x, touch.y))

def on_touch_move(self, touch):
    if self.collide_point(touch.x, touch.y):
        touch.ud['line'].points += [touch.x, touch.y]

class MyPaintApp(App):       
    def build(self):
        return CombWidget()

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

およびレイアウト ファイル:

#:kivy 1.7.0


<CombWidget>:
    BoxLayout:
        orientation: 'vertical'
        padding: 20
        spacing: 50

        MyPaintWidget:
            size: 100000, 100000
            size_hint: 100000, 100000

        Button:
            text: "Hallo"
        Button:
            text: "Hallo 1"
        Button:
            text: "Hallo 2"

MyPaintWidget のサイズを大きくするために、kv ファイルで size: および size_hint: パラメータを使用しましたが、成功しませんでした。

MyPaintWidget のサイズを大きくして、その領域がチュートリアルの MyPaintyApp と同じように動作するように、誰でも助けてもらえますか。また、ボタンをクリックするとボタンが表示されるのはなぜですか。

よろしく

4

1 に答える 1