如何重置实例属性?

时间:2016-02-06 23:59:03

标签: python kivy

我使用kivy生成一个滚动视图,当点击按钮时,每个按钮都被一个数字标记。我还有另一个按钮,用于清除滚动视图中的按钮,但它会保留数字并且不会重置为0.

我的python代码:

class GetLinksButton(Button):

    link_number = 1

    def get_links(self):
        for i in xrange(3):
            link_button = LinkButton(
                text='link number ' + str(self.link_number)
            )
            self.link_number += 1
            self.links_grid.add_widget(link_button)


class LinkButton(Button):
    pass

class Clearlinkbuttons(Button):
    def clear_links(self):
        self.links_grid.clear_widgets()
        GetLinksButton.link_number = 1

我的kivy代码:

<RightArea@GridLayout>:
    cols: 1
    size_hint_x: 0.3
    spacing: '10dp'

    ScrollView:
        LinksGrid:
            id: links_grid

    BoxLayout:
        cols: 1
        rows: 2
        GetLinksButton:
            links_grid: links_grid
        Clearlinkbuttons:
            links_grid: links_grid


<LinksGrid@GridLayout>:
    cols: 1
    spacing: '5dp'
    size_hint_y: None
    height: self.minimum_height


<GetLinksButton>:
    size_hint_y: 0.1
    text: 'get links'
    on_press: self.get_links()

<Clearlinkbuttons>:
    size_hint_y: 0.1
    text: 'clear links'
    on_press: self.clear_links()

<LinkButton>:
    size_hint_y: None
    height: '80dp'

我的应用程序在我按下了获取链接和清除链接按钮几次后:

test_app

滚动视图位于顶部。

我也尝试过:

class Clearlinkbuttons(Button):
    def clear_links(self):
        self.links_grid.clear_widgets()
        self.links_grid.link_number = 1

1 个答案:

答案 0 :(得分:1)

在课程GetLinksButton中,将self.link_number的每次出现都替换为GetLinksButton.link_number

如果您有一个静态变量(link_number),并使用对象实例(self)而不是类(GetLinksButton)调用它,则该变量将被复制到一个对象中使用它。

相关问题