0
是否可以在多個對象中綁定on_dropfile
?或者它總是隻有一個綁定?kivy on_dropfile多個綁定
我decalred類
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"
但只適用於第一個字段(它只能看到那些上被丟棄的文件「請刪除file1「字段,在其他情況下,它會收到放置,但無法確認它位於第二個字段的邊界,就好像它只綁定第一個對象的on_dropfile
函數一樣)。
是否有任何優雅的方式來實現它的多個對象?
感謝您的回覆。 我知道班級是如何工作的。 助手只是一個空的'類助手'來保存鼠標的位置,我已經將'Window.bind(mouse_pos = lambda w,p:setattr(helper,'mpos',p))'行'移到了主類因此它不會被執行多次。 它不像'on_release'那樣工作,因爲'on_dropfile'是一個窗口事件,而不是小部件事件,不幸的是我不能將它與kv綁定,因爲它會拋出異常。 我已經轉移到PyQt,因爲它似乎更適合桌面應用程序(Kivy可能會說這是所有的,但是爲移動而精簡)。 但問題仍然有效 – sanki
@sanki我編輯它,所以它的工作 – KeyWeeUsr
謝謝,對於新的編輯,這似乎工作得更好:-) – sanki