首页 > 解决方案 > 如何计算并打印出kivy中点击的按钮数

问题描述

我需要一个函数来计算在一组可能四个按钮中的三个中单击了多少个按钮。也就是说,如果我点击三个或四个按钮中的两个按钮,它应该打印出你点击了两个按钮

import kivy
from kivy.app import App
from kivy.uix.floatlayout import Floatlayout
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.label import Label 

class LandingScreen(FloatLayout):
    def __init__(self, **kwargs):
        super(LandingScreen, self).__init__(**kwargs)

  # put whatever pos_hint value you want and the on_press event.           
self.btn1=Button(text='button1 ', size_hint=(0.5, 0.5)))
self.btn2=Button(text='button1 ', size_hint=(0.5, 0.5)))
self.btn3=Button(text='button1 ', size_hint=(0.5, 0.5)))


            
self.add_widget(self.btn1)
self.add_widget(self.btn2)
self.add_widget(self.btn3)

 
 # I need a function to count the numbers of buttons clicked out of the three buttons         

class SplashApp(App):
    def build(self):
        return LandingScreen()

if __name__ == '__main__':
    SplashApp().run()

标签: pythonkivy

解决方案


当按钮被按下时,它应该触发一个功能。此函数应将唯一 ID 添加到集合中。此唯一 ID 可以是第一个按钮的 1,第二个按钮的 2,等等。

它可能看起来像这样:

mySet = set()
def onClick(self, id):
    mySet.add(id)
#bind the function to the button
self.btn1.bind(on_press = self.onClick(1))
self.btn2.bind(on_press = self.onClick(2))
self.btn3.bind(on_press = self.onClick(3))

要获取按下了多少个按钮,您可以通过执行来获取长度len(mySet)

为什么在列表上使用集合?

一个列表可以有多个相同的项目。集合必须是唯一的。如果用户单击按钮 2 次,列表可能如下所示:[1, 2, 2]。一个集合,不管有多少点击,看起来像这样:[1, 2]


推荐阅读