ScatterLayout - do_translation não funciona
Nov 03 2020
Meu código
import kivy
from kivy.uix.scatterlayout import ScatterLayout
from kivy.app import App
from kivy.uix.image import Image
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
class MyScatter(ScatterLayout):
def __init__(self, *args, **kwargs):
super(MyScatter, self).__init__(*args, **kwargs)
self.img = Image(source='img.png', keep_ratio=True, center = self.center)
self.add_widget(self.img)
class MainApp(App):
def build(self):
mainbox = FloatLayout()
mainbox.add_widget(Button(text="Prev",
font_size="17dp",
size_hint=(.15, .15),
pos_hint={"left":1,
"center_y":0.5},
))
ms = MyScatter(scale=1, pos_hint={"center_x":0.33, "center_y":0.5}, do_scale = True, do_rotation = False, do_translation = True)
mainbox.add_widget(ms)
return mainbox
root = MainApp()
root.run()
As posições do botão e da imagem estão de acordo com minhas necessidades. Mas, eu defini do_translation= True para MyScattere não funciona.
Respostas
xralf Nov 03 2020 at 03:24
Eu inspirei aqui e escrevi este código:
import kivy
from kivy.uix.scatterlayout import ScatterLayout
from kivy.app import App
from kivy.uix.image import Image
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
class MyScatter(ScatterLayout):
def __init__(self, *args, **kwargs):
super(MyScatter, self).__init__(*args, **kwargs)
self.img = Image(source='img.png', keep_ratio=True, pos_hint={"center_x":0.33, "center_y":0.5})
self.add_widget(self.img)
def on_touch_move(self, touch): #magic time!!!!
res = super(MyScatter, self).on_touch_move(touch)
if res: #Yay do something!
self.img.pos = (self.center_x, self.center_y)
return res
class MainApp(App):
def build(self):
mainbox = FloatLayout()
mainbox.add_widget(Button(text="Prev",
font_size="17dp",
size_hint=(.15, .15),
pos_hint={"left":1,
"center_y":0.5},
))
ms = MyScatter(scale=1, do_scale = True, do_rotation = False, do_translation = True)
mainbox.add_widget(ms)
return mainbox
root = MainApp()
root.run()
Parece funcionar. Por favor, deixe-me saber se é uma boa solução.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas