在kivy中创建自定义列表单击计数器

时间:2017-07-14 15:42:58

标签: python kivy

我正在尝试kivy并在kivy写了一个列表点击计数器。当按下按钮时,它应显示列表元素和数字,下一次单击应显示下一个列表元素,重复这个数字直到列表完成。这是我的python文件。

#main.py
from kivy.uix.boxlayout import BoxLayout
from kivy.app import App


class Page(BoxLayout):
    pass

class SimpleKivyApp(App):

    def onClick(self,i,j):
        ls=["foo","boo","goo","koo","bar" ]         
        for i,j in enumerate(ls):    
            self.root.ids.id1.text=str(i)+" "+str(j)

    def build(self):     
        return Page()

a=SimpleKivyApp()
a.run()

kv文件

#simplekivy.kv
<Page>:
    Label:
        id:id1
        pos:0,0
        font_size:80            

    Button:
        size_hint:0.5,0.2       
        font_size:60
        text:"Submit"
        on_press:  app.onClick()

我不知道为kivy提交关键事件的合理方式。我尝试在列表中循环,但我知道它不是正确的方式而且崩溃了。

1 个答案:

答案 0 :(得分:1)

每次点击,列表都会重新初始化。做类似的事情:

from kivy.properties import ObjectProperty
class SimpleKivyPage(Page):
    def __init__(self):
        self.ls = ["foo","boo","goo","koo","bar" ]
        self.identify = ObjectProperty()


class SimpleKivyApp(App):
    page = SimpleKivyPage()

    def onClick(self,i,j):
        self.page.identify.text=str(i)+" "+str(self.ls[i])
        self.i += 1

    def build(self):
        return self.page

a=SimpleKivyApp()
a.run()

另外,修改您的kv文件:

#simplekivy.kv
<SimpleKivyPage>:
    identify: id1
    Label:
        id:id1
        pos:0,0
        font_size:80            

    Button:
        size_hint:0.5,0.2       
        font_size:60
        text:"Submit"
        on_press:  app.onClick()