여러 개의 버튼이있는이 애플리케이션을 작성하려고합니다. 각 단추 이벤트를 콜백에 바인딩 할 수 있지만 이벤트를 발생시킨 단추를 제외한 다른 단추의 상태 (즉 레이블)를 변경할 수는 없습니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?Kivy에서 하나의 버튼 이벤트를 기반으로 여러 위젯이 변경되었습니다.
0
A
답변
1
다른 버튼에 대한 참조 만 있으면 other_button.text = 'whatever'
할 수 있습니다.
이 작업을 수행하는 방법은 프로그램을 작성한 방법에 따라 다릅니다. 예를 들어 kv 언어로 프로그램을 작성한 경우 버튼 번호를 id: some_id
으로 지정하고 on_press: some_id.do_something()
과 같은 콜백에서 해당 버튼을 참조 할 수 있습니다.
순수 Python에서는 콜백을 만들 때 부모 클래스의 버튼에 대한 참조 (예 : self.button = Button()
)를 유지하여 콜백이 self.button
을 참조하도록 변경할 수 있습니다. 분명히 그것은 간단한 예이지만, 일반적인 생각은 당신이 원하는 것을 성취 할 수있게 해줍니다.
1
아마도 공식적인 방법은 아니지만 다음 코드를 시험해보십시오.
#:kivy 1.8.0
<Ezs>:
BoxLayout:
orientation: 'vertical'
padding: 0
spacing: 6
#choose
Button:
id: btn_1
text: 'text before'
on_press: btn_2.text = 'Whatever'
on_release: self.text = 'Who-Hoo'
#choose
Button:
id: btn_2
text: 'Press this'
on_release: self.text = 'HEEYY'
on_press: btn_1.text = 'text after'
평 파일 :
class Ezs(BoxLayout):
class EzsApp(App):
def build(self):
return Ezs
if __name__ == '__main__':
EzsApp().run()
그것은 ...
Ezs.kv 파일을 버튼의 텍스트 속성을 변경합니다
관련 문제
- 1. ScrollView 위젯이 kivy에서 스크롤되지 않습니다
- 2. kivy에서 키보드 이벤트를 어떻게 확인합니까?
- 3. cellForRowAtIndexPath의 버튼 상태가 변경되었습니다.
- 4. 하나의 버튼, 여러 동작
- 5. 하위 위젯이 자체 이벤트를 처리해야합니까?
- 6. 패널의 버튼 위치가 변경되었습니다.
- 7. kivy에서 "마우스 오버"이벤트를 얻는 방법
- 8. 버튼 릴리스 이벤트가 Kivy에서 작동하지 않습니다.
- 9. 하나의 리스너 - 여러 개의 버튼
- 10. 하나의 버튼이 여러 개있는 버튼
- 11. 하나의 버튼 아래에 여러 이벤트가 있습니다. android
- 12. 여러 양식이 하나의 스캐너 이벤트를 처리합니다.
- 13. iOS의 이벤트를 기반으로 여러 작업 시작하기
- 14. 휴대 기기에서 버튼 모양이 변경되었습니다.
- 15. 구조 맵 구성이 app.config의 설정을 기반으로 변경되었습니다.
- 16. JQuery는 Toggle을 기반으로 이벤트를 수행합니다.
- 17. 여러 이벤트를 jQuery의 하나의 선택기에 바인딩
- 18. 하나의 이벤트를 공유하기 위해 여러 컨트롤을 연결하십시오.
- 19. Kivy에서 동적으로 Dropdowns 빌드
- 20. 어떤 JQuery 탭 위젯이 onload 이벤트를 제공합니까?
- 21. kivy에서 팝업으로 이미지를로드하는 방법
- 22. wpf에서 버튼 클릭 이벤트를 기반으로 프레임을 닫거나 숨길 수 있습니까?
- 23. 여러 양식, cakephp에 하나의 제출 버튼 3
- 24. 하나의 양식으로 여러 라디오 버튼 확인
- 25. 여러 제출 버튼. 하나의 양식 유형
- 26. 여러 개의 텍스트 상자에 하나의 버튼
- 27. 하나의 jQuery 함수를 트리거하는 여러 개의 버튼
- 28. 이벤트를 기반으로 지연 로깅
- 29. jQuery :: 두 가지 가능한 이벤트를 기반으로 하나의 함수를 실행하는 방법
- 30. 여러 패키지가 동일하게 변경되었습니다. Eclipse