2017-11-26 15 views
0

は、私は1つの特定のアイデアとのトラブルを抱えています。しかし、私は矩形を左右にドラッグしてY位置を固定したい。Kivyドラッグ行動ラベルや長方形

どうすればこの問題を解決できますか?私は複数の組み合わせを試してみましたが、オンラインでこの特定の問題を探しました。私はソースコードもチェックしましたが、それをまとめることはできませんでした。どのような助けもありがとうございました!ここで

は、以下のコードである:あなたのラベルの

from kivy.uix.label import Label 
from kivy.app import App 
from kivy.uix.behaviors import DragBehavior 
from kivy.lang import Builder 

kv = ''' 
<DragLabel>: 
    # Define the properties for the DragLabel 
    drag_rectangle: self.x, self.y, self.width, self.height 
    drag_timeout: 10000000 
    drag_distance: 0 

FloatLayout: 
    # Define the root widget 
    DragLabel: 
     size_hint: 1.0, 0.2 
     text: 'Drag me' 
     canvas.before: 
      Color: 
       rgb: .6, .6, .6 
      Rectangle: 
       pos: self.pos 
       size: self.size 
''' 

class DragLabel(DragBehavior, Label): 
    pass 

class RectangleApp(App): 
    def build(self): 
     object = Builder.load_string(kv) 
     return object 

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

答えて

1

あなたが本当にDragBehaviourでラベルを使用する場合は、あなたがon_touch_upを再定義する必要があり、on_touch_downon_touch_move

しかし、これを実現するためのより簡単な方法は、ScatterLayoutを使用し、y軸の翻訳を無効にすることです。

from kivy.app import App 
from kivy.lang import Builder 

kv = ''' 
FloatLayout: 
    # Define the root widget 
    ScatterLayout: 
     size_hint: 1.0, 0.2 
     do_translation_y: False 
     Label: 
      size_hint: 1.0, 1 
      text: 'Drag me' 
      canvas.before: 
       Color: 
        rgb: .6, .6, .6 
       Rectangle: 
        pos: self.pos 
        size: self.size 
''' 

class RectangleApp(App): 
    def build(self): 
     object = Builder.load_string(kv) 
     return object 

if __name__ == '__main__': 
    RectangleApp().run() 
+0

もう一度やりました!あなたはとても役に立ちます、ありがとう。 – Jonathan

+0

@Jonathanあなたはようこそ –

関連する問題