マウスをクリックした位置に小さな楕円を描くアプリを作成しようとしています。次に、もう一度クリックすると、古い楕円が削除され、新しいマウス クリック位置に新しい楕円が描画されます。私はこの部分を機能させました。次のステップは、マウスのクリック位置を取得して、2 つのラベルのテキストを印刷することです。何らかの理由で、ラベル テキストを適切に参照して更新する方法がわかりません。私のコードは以下です。ColorLoopWidget は、主に Kivy チュートリアルの A Simple Paint App に基づいています。
メイン.py
from kivy.config import Config
Config.set('graphics', 'width', '1000')
Config.set('graphics', 'height', '500')
Config.set('graphics', 'resizable', 0)
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.graphics import Color, Ellipse, Line
Builder.load_file('hueLayout.kv')
class ColorLoopWidget(Widget):
xlabel = ObjectProperty
ylabel = ObjectProperty
def on_touch_down(self, touch):
with self.canvas:
self.canvas.clear()
d = 10
Ellipse(pos=(touch.x - d/2, touch.y - d/2), size=(d,d))
touch.ud['line'] = Line(points=(touch.x, touch.y))
## self.xlabel.text = 'x: '+str(touch.x)
## self.ylabel.text = 'y: '+str(touch.y)
## def on_touch_move(self, touch):
## touch.ud['line'].points += [touch.x, touch.y]
class HueLayout(Widget):
colorloopwidget = ObjectProperty
xlabel = ObjectProperty
ylabel = ObjectProperty
## def on_touch_down():
## ColorLoopWidget.on_touch_down()
##
## def on_touch_move():
## ColorLoopWidget.on_touch_move()
def clear_canvas(self):
self.colorloopwidget.canvas.clear()
class HueApp(App):
def build(self):
return HueLayout()
if __name__ == '__main__':
HueApp().run()
HueLayout.kv
<HueLayout>:
colorloopwidget: colorloopwidget
xlabel: xlabel
ylabel: ylabel
BoxLayout:
size: 1000, 500
orientation: 'horizontal'
ColorLoopWidget:
id: colorloopwidget
size: 500, 500
BoxLayout:
orientation: 'vertical'
Button:
text: 'Clear'
on_release: root.clear_canvas()
Label:
id: xlabel
text: 'x: '
size_hint_y: 0.2
Label:
id: ylabel
text: 'y: '
size_hint_y: 0.2