Проблема
У меня проблема с добавлением и отображением изображения в макете каждый раз, когда я нажимаю на экран с помощью мыши.
Основная причина
Изображение не отображается, потому что оно добавляет к локальному атрибуту self.camlayout
в методе on_touch_down()
из class Myszka()
.
Решение
Замените self.camlayout.add_widget(self.flaga)
на App.get_running_app().root.add_widget(self.flaga)
т.е. получитеэкземпляр корня (camlayout
).
Snippets - py
class Myszka(Widget):
def on_touch_down(self, touch):
...
App.get_running_app().root.add_widget(self.flaga)
Пример
В следующем примере показано добавление Image
в позиции мышинажмите на FloatLayout
.
main.py
import os
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image
class Mouse(FloatLayout):
def on_touch_down(self, touch):
img_path = "/home/iam/Pictures/AppImages"
flag_path = os.path.join(img_path, "Android_celebrate.png")
flag = Image(source=flag_path, size_hint=(None, None), size=(64, 64),
pos=(round(touch.pos[0], 1), round(touch.pos[1], 1)))
self.add_widget(flag)
class TestApp(App):
def build(self):
return Mouse()
if __name__ == "__main__":
TestApp().run()
Выход