2017-01-16 7 views
0

Я недавно начал использовать kivy для создания графического интерфейса для моего приложения python. В приложении одно из действий отправляет запросы на сервер с помощью предоставленного API. После нескольких тестов я заметил одну неприятную вещь, которая случается только тогда, когда я хочу сделать запрос - кнопка не меняет цвет при нажатии (я говорю о действии по умолчанию). Тем не менее, он меняется, когда используется простой print().Kivy - изменение цвета кнопки при нажатии

Как я могу это исправить? Есть идеи?

Это код моего тестового приложения:

class TestApp(App): 
    def build(self): 
     parent = Widget() 
     btn = Button(text='Add') 
     btn.bind(on_press=self.add) 
     parent.add_widget(btn) 
     return parent 

    def add(self, obj): 
     print("Adding") 
     request = Request(url, urlencode(post_fields).encode()) 
     urlopen(request) 

ответ

2

Это произошло, скорее всего, потому что UI замер. Вызывается self.add, но сразу после этого пользовательский интерфейс ждет, пока запрос не будет выполнен, что может привести к этому.

Попробуйте сделать это следующим образом:

import threading 

class TestApp(App): 
    def build(self): 
     parent = Widget() 
     btn = Button(text='Add') 
     btn.bind(on_press=self.add) 
     parent.add_widget(btn) 
     return parent 

    def add(self, obj): 
     print("Adding") 
     #self.printer() # freezing 
     threading.Thread(target=self.printer).start() 

    def printer(self, *args): 
     while True: 
      print 'blob' 
TestApp().run() 

Кроме того, вместо on_press использовать довольно on_release. Предотвращает случайные события, если я правильно помню (проверяет зону касания касания).

+0

Благодарим вас за ответ, но, к сожалению, сейчас он не запускает метод вообще. Кнопка правильно меняет цвет. – sebap123

+0

@ sebap123 см. Редактирование. Thread предотвращает зависание пользовательского интерфейса. Если запрос не работает, это проблема с запросом/кодом. – KeyWeeUsr

+0

Теперь он работает! Большое спасибо за редактирование. – sebap123

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

  • Нет связанных вопросов^_^