如何从Python

时间:2018-02-01 07:18:45

标签: python python-2.7

有人可以告诉我如何在add_row课程中使用def test(self):方法拨打User方法吗? 现在我正在使用代码进行调用Rows().add_row()。我在def add_row(self):中打印一些内容然后打印但不在屏幕中添加小部件。

test.py

class User(Popup):

    def __init__(self, obj, **kwargs):
        super(User, self).__init__(**kwargs)

    def test(self):
        Rows().add_row()

class narration(BoxLayout):
    col_data = ListProperty(["?", "?", "?"])
    button_text = StringProperty("")

    def __init__(self, **kwargs):
        super(narration, self).__init__(**kwargs)

class Rows(BoxLayout):
    row_count = 0

    def __init__(self, **kwargs):
        super(Rows, self).__init__(**kwargs)

    def add_row(self):
        self.row_count += 1
        self.add_widget(narration(button_text=str(self.row_count)))

2 个答案:

答案 0 :(得分:0)

class User(Popup):

    def __init__(self, obj, **kwargs):
        super(User, self).__init__(**kwargs)
        self.row_obj = obj

    def test(self):
        self.row_obj.add_row()


class narration(BoxLayout):
    col_data = ListProperty(["?", "?", "?"])
    button_text = StringProperty("")

    def __init__(self, **kwargs):
        super(narration, self).__init__(**kwargs)


class Rows(BoxLayout):
    row_count = 0

    def __init__(self, **kwargs):
        super(Rows, self).__init__(**kwargs)

    def add_row(self):
        self.row_count += 1
        self.add_widget(narration(button_text=str(self.row_count)))


rows_obj = Rows()
user_obj = User(rows_obj)

它不是一个有效的代码它只是一个例子但是你的方法应该是那样的。如果你不想传递" Rows"上课而不是#34;用户"作为" Rows"使用继承概念的类。

class User(Rows,Popup):

答案 1 :(得分:-1)

我稍微改变了你的代码,向你展示它是如何完成的。

在tmp.py

class Rows(object):
    row_count = 0

    def __init__(self, **kwargs):
        super(Rows, self).__init__(**kwargs)

    def add_row(self):
        self.row_count += 1
        print "Hello"
        # self.add_widget(narration(button_text=str(self.row_count)))

class User(Rows):

    def __init__(self, obj, **kwargs):
        super(User, self).__init__(**kwargs)

    def test(self):
        self.add_row()

class narration(object):
    # col_data = ListProperty(["?", "?", "?"])
    # button_text = StringProperty("")

    def __init__(self, **kwargs):
        super(narration, self).__init__(**kwargs)

为了让它发挥作用,我必须注释掉一些行。

现在,在tmp2.py

from tmp import User

if __name__ == '__main__':
    temp = User("H")
    temp.test()
    # outputs : Hello

我们所做的是实现User类,例如:

class User(Rows):,因此当您使用正确的super()语句调用User类时,您将能够使用方法 >就像你在用户类中定义一样使用它。

因此,您将调用(已在代码中进行了修改):self.add_row(),即使add_row()是来自的方法。