所以我对Kivy和Gui编码一般都是新手。。。。我正在尝试创建一个可移动图像,以下是我迄今为止尝试过的代码:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.image import Image
from kivy.uix.behaviors import DragBehavior
from kivy.uix.floatlayout import FloatLayout
class Box_layout(FloatLayout):
def __init__(self,**kwargs):
super(Box_layout, self).__init__(**kwargs)
self.size_hint = (.50,.50)
self.orientation = "vertical"
self.add_widget(MoveableImage())#drag_rectangle = [self.x, self.y, self.width, self.height],source="temp_plot.png"))
class MoveableImage(DragBehavior,Image):
def __init__(self, **kwargs):
super(MoveableImage, self).__init__(**kwargs)
self.drag_timeout = 10000000
self.drag_distance = 0
#self.drag = DragBehavior()
#self.drag.drag_rectangle = [self.x, self.y, self.width, self.height]
class gameApp(App):
def build(self):
wimg = MoveableImage(source="temp_plot.png")
m = Box_layout()
if __name__ == '__main__':
gameApp().run()
发生的情况是,我当前有一个空白的“图像”,在第一次单击时可以拖动,但在移动一次后,它会达到超时或无法移动的状态。。。。。我认为这是一个超时问题或其他问题,尽管self.drag_timeout = 10000000
没有解决这个问题……我在这里做错了什么?
此外,当我将一个实际的源传递给MoveableImage时,即self.add_widget(MoveableImage(source='tmp.png'))
,图像一开始就不可移动,这对我来说再次是非常困惑的……如果有人能帮助解释发生了什么,然后解释为什么会发生这些行为,那就太棒了
您还需要更新
MoveableImage
的drag_rectangle
。最简单的方法是使用kv
语言。因此MoveableImage
类可以简单地:然后像这样加载
kv
规则:这里使用
kv
的优点是它会自动设置绑定,否则您必须自己编写绑定。drag_rectangle
就是一个例子,因此当移动MoveableImage
时,drag_rectangle
会自动更新如果您想自己设置这些绑定(而不是使用
kv
),您可以将MoveableImage
定义为:相关问题 更多 >
编程相关推荐