====>好的,感谢它与b.bind合作(on_press = partial(self.choix_avatar,chemin)) -
我必须更多地关注"可赎回的"功能......
有一些我不了解Kivy de事件的事情,有弹出事件。
使用kivy 1.8.0,我认为弹出窗口存在错误
我创建了一个原始按钮: on_press =>创建一个弹出窗口 在这个弹出窗口中,在许多按钮中有一个Stacklayout
当我按下原始按钮时,on_press会传播到StackLayout的按钮!!!!! 但我的弹出窗口不是原始按钮的子组件!所以为什么? 我不能'一旦初始化,我的按钮就会激活任何on_press ... 任何的想法 ?谢谢 ! R.T。
<。>在.kv和.py 中<AvatarProfil>:
orientation:'vertical'
Button:
size:(60,60)
size_hint:(None,None)
on_press:root.changer_avatar()
background_normal:root.avatar
Label:
text:''
font_size:14
italic:True
halign:'left'
class AvatarProfil(BoxLayout):
auteur=StringProperty('')
avatar=StringProperty('test/interrogation.png')
def changer_avatar(self):
panel=PanelAvatar(w_avatar=self)
popup = Popup(title='Les Avatars à choisir',content=panel,size_hint=(None,None),size=(600,600))
popup.open()
def __init__(self, **kwargs):
super(AvatarProfil, self).__init__(**kwargs)
class PanelAvatar(StackLayout):
w_avatar=ObjectProperty(None)
def __init__(self, **kwargs):
self.spacing=(5,5)
super(PanelAvatar, self).__init__(**kwargs)
self.lavatars=[]
self.w_avatar=kwargs['w_avatar']
for root, dirs, files in os.walk('test/avatars resized', topdown=False):
for name in files:
chemin='test/avatars resized/'+name
b=Button(background_normal=chemin,on_press=self.choix_avatar(chemin),size_hint=(None,None))
self.add_widget(b)
def choix_avatar(self,file):
print ('choix de )%s'%(file))
self.w_avatar.avatar=file
这是打印日志:(没有任何手动按钮按!!!)
choix de )test/avatars resized/avatar (1).jpg
choix de )test/avatars resized/avatar (1).png
choix de )test/avatars resized/avatar (10).jpg
choix de )test/avatars resized/avatar (11).jpg
choix de )test/avatars resized/avatar (12).jpg
choix de )test/avatars resized/avatar (13).jpg
choix de )test/avatars resized/avatar (14).jpg
choix de )test/avatars resized/avatar (15).jpg
choix de )test/avatars resized/avatar (16).jpg
choix de )test/avatars resized/avatar (17).jpg
choix de )test/avatars resized/avatar (18).jpg
choix de )test/avatars resized/avatar (19).jpg
choix de )test/avatars resized/avatar (2).jpg
choix de )test/avatars resized/avatar (2).png
choix de )test/avatars resized/avatar (20).jpg
choix de )test/avatars resized/avatar (21).jpg
choix de )test/avatars resized/avatar (22).jpg
choix de )test/avatars resized/avatar (23).jpg
choix de )test/avatars resized/avatar (24).jpg
choix de )test/avatars resized/avatar (25).jpg
choix de )test/avatars resized/avatar (3).jpg
choix de )test/avatars resized/avatar (3).png
choix de )test/avatars resized/avatar (4).jpg
choix de )test/avatars resized/avatar (5).jpg
choix de )test/avatars resized/avatar (6).jpg
choix de )test/avatars resized/avatar (7).jpg
choix de )test/avatars resized/avatar (8).jpg
choix de )test/avatars resized/avatar (9).jpg
答案 0 :(得分:1)
在这里,当你想要绑定它时,你正在调用choix_avatar()
。
b=Button(background_normal=chemin,on_press=self.choix_avatar(chemin),size_hint=(None,None))
试试这个:
b=Button(background_normal=chemin, size_hint=(None,None))
b.bind(on_press=lambda *_: self.choix_avatar(chemin))