2015-11-25 5 views
1

В Kivy, при создании экземпляра кнопки, вы можете привязать эту кнопку к событию, скажем так:Как определить, какая кнопка была нажата

btn = Button(text='This do be a button') 
btn.bind(on_release=self.method_call) 
self.add_widget(btn) 

И если вы хотите создать много кнопок, говорят произвольное количество основано на кучу строк в списке, вы можете сделать:

list = ('item1', 'item2', 'item3', 'item4') 
for item in list: 
    self.btn = Button(text=item) 
    #some method call 
    self.add_widget(btn) 

Как вы можете вызвать метод и передать некоторый идентификатор кнопки для каждого уникального нажатия кнопки?

ответ

0

Функция обратного вызова, которую вы передаете на вызов bind, получит ссылку на нажатый Button экземпляр в качестве аргумента при его вызове.

Итак, чтобы определить, на какой кнопке это нужно, вам просто нужно держать все свои кнопки где-то и сравнивать с ними или, возможно, извлечь text, который вы устанавливаете как ярлык кнопки, в зависимости от того, что именно вы хотите делать с результат.

Итак, код, который вам нужно изменить, находится в self.method, а не в коде, устанавливающем кнопку (за исключением того, что по какой-то причине вы хотите, чтобы объекты кнопки были по какой-либо причине, вы, вероятно, захотите добавить их в список, а не повторно переписывать self.button).

Смежные вопросы