0
on_dropfile
を複数のオブジェクトにバインドすることはできますか?それとも、常に唯一のバインドですか?kivy on_dropfile複数のバインディング
私はクラスが
class dropFile(Label):
def __init__(self, **kwargs):
super(dropFile, self).__init__(**kwargs)
Window.bind(mouse_pos=lambda w, p: setattr(helper, 'mpos', p))
Window.bind(on_dropfile=self.on_dropfile)
def on_dropfile(self, *args):
print ("ding")
if (self.center_x - self.width/2 < helper.mpos[0] < self.center_x + self.width/2 and
self.center_x - self.height/2 < helper.mpos[1] < self.center_y + self.height/2):
print('dong')
self.text = str(args[1])
とKVに、私はちょうど
dropFile:
text: "Please drop file1"
dropFile:
text: "Please drop file2"
としてそれを使用するしかし、唯一の最初のフィールド上で動作して(それだけにドロップされたファイルを見てdecalredました」 Drop1をドロップしてください。それ以外の場合はドロップを受け取りますが、最初のオブジェクトのon_dropfile
の機能のみをバインドしているかのように、2番目のフィールドの境界にあることを確認できません。
複数のオブジェクトに対してそれを実装する上品な方法はありますか?
返信いただきありがとうございます。 私はクラスの仕組みを知っています。 ヘルパーは、マウスの位置を保持するための空の 'クラスヘルパー 'です。後でメインウィンドウに' Window.bind(mouse_pos = lambda w、p:setattr(helper、' mpos '、p))という行を移動しました。それは複数回実行されません。 'on_dropfile'はウィンドウイベントであり、残念なことにウィジェットイベントではないので、' on_release'のように動作しません。例外をスローするときにkvからバインドできません。 私はデスクトップアプリケーションに適しているようにPyQtに移りました(Kivyはそれはすべてのためだと言えるかもしれませんが、モバイル向けに合理化されています)。 しかし、質問はまだ有効です – sanki
@ sanki私はそれを編集したので、それは働いた – KeyWeeUsr
ありがとう、新しい編集のため、それははるかに優れているようです:-) – sanki