我正在編寫一個程序,該程序在右側有一個按鈕面板,可以根據用戶輸入/操作成功地將方法綁定到每個方法。我的問題是,我不能明確地方法unbind()
,因爲方法綁定是動態的。Kivy - 解除綁定到按鈕上的所有方法
考慮;
i = 1
while i <= 8:
string = "action" + str(i)
#Buttons named 'action1, action1, ..., action8'
ref = self.ids[string]
ref.text = ""
observers = ref.get_property_observers('on_release')
print observers
ref.unbind()
ref.bind(on_release=partial(self.BlankMethod, arg1))
i += 1
的線;
observers = ref.get_property_observers('on_release')
print observers
證明我有一個綁定weakmethods的增加列表,每次調用該方法,但解除綁定功能不解除綁定的方法。
儘管我的代碼示例沒有顯示它,但綁定的方法會定期更改,而self.BlankMethod
旨在覆蓋原始綁定。情況並非如此,並且Button
的綁定方法增加。
[<kivy.weakmethod.WeakMethod object at 0x7f8cc826a810>]
[<kivy.weakmethod.WeakMethod object at 0x7f8cc826a850>, <kivy.weakmethod.WeakMethod object at 0x7f8cc826acd0>]
我都試過;
observers = ref.get_property_observers('on_release')
if observers != []:
for observer in observers:
ref.unbind(observer)
ref.bind(on_release=partial(self.Blank))
但是我返回了錯誤;
TypeError: unbind() takes exactly 0 positional arguments (1 given)
我看了一下使用funbind()
功能,但隨後給出;
AttributeError: 'Button' object has no attribute 'funbind'
嘗試使用fbind()
之前funbind()
也給出了相同的錯誤,但相對於所述按鈕不具有fbind()
屬性。
如何列出對象的所有綁定方法,然後解除綁定?
我打算建議使用'fbind' /'unbind'。你可以顯示你的'fbind'的用法嗎?請注意,語法略有不同。 – zeeMonkeez
我偶然發現了這一點,但顯然「Button」沒有屬性'fbind'... ...? - 是的,1時刻 – Chazara
'ref.fbind('on_release',self.SignPopupMethod,str(signText))'是我如何使用它 – Chazara