Python / Kivy - 在对象实例化后立即调用类方法

时间:2017-03-10 01:44:15

标签: python-3.x kivy kivy-language

使用Kivy,我创建了一个自定义按钮类DefaultButton。

Python代码:

class DefaultButton(Button):

   def __init__(self, **kwargs):
       super(DefaultButton, self).__init__(**kwargs)
       size_hint = (None, None)
       self.width = 200
       self.set_width()


   def set_width(self):
       if(self.texture_size[0] > self.width)
           self.width = self.texture_size[0]
       print(self.texture_size)

Kivy代码:

<MainLayout>:
    size: self.size
    BoxLayout:
        pos_hint_y: None
        top: self.parent.top
        size_hint: 1, None
        height: 60
        DefaultButton:
            text: "really long string (longer than 200px)"
        DefaultButton:
            text: "short string" #less than 200px

DefaultButton类(python代码)中,方法set_width()旨在自动将按钮的宽度设置为文本长度,但前提是文本长度超过设置的宽度。它检查纹理的宽度(即按钮文本的长度)与当前宽度。如果纹理位于按钮边界之外,则会将其大小调整为texture_width。

我的第一个DefaultButton将调整为其文本的长度,而第二个按钮则不会......

目前,set_width()方法为每个按钮texture_size打印'0',因为在self.set_width方法中调用__init__,然后初始化DefaultButton对象。有没有办法在实例化后立即在当前实例上调用set_width()

0 个答案:

没有答案