python:类内的函数调用

python:类内的函数调用,python,kivy,Python,Kivy,这是一个示例程序,在按下按钮1或2时显示“Hello”或“Good bye”,这是从我的真实程序简化而来的。 我要做的是执行函数btn1(),在程序启动时显示“Hello”,而不按按钮1。 我应该在哪里添加哪些代码行? 当我在类问候语中放入“问候语().btn1()”时,出现错误:“名称问候语未定义”。然后我在GreetingApp类中的def build(self)之后放了相同的命令,但什么也没发生 在main.py中 from kivy.app import App from kivy.

这是一个示例程序,在按下按钮1或2时显示“Hello”或“Good bye”,这是从我的真实程序简化而来的。
我要做的是执行函数btn1(),在程序启动时显示“Hello”,而不按按钮1。
我应该在哪里添加哪些代码行?
当我在类问候语中放入“问候语().btn1()”时,出现错误:“名称问候语未定义”。然后我在GreetingApp类中的def build(self)之后放了相同的命令,但什么也没发生

在main.py中

from kivy.app import App  
from kivy.uix.boxlayout import BoxLayout  
from kivy.properties import StringProperty  

class Greetings(BoxLayout):
    greeting=StringProperty()  

    def btn1(self):  
        self.greeting='Hello.'  

    def btn2(self):  
        self.greeting='Good-bye.'  

class GreetingApp(App):  
    def build(self):  
        return Greetings()  

GreetingApp().run()  
在问候中

#: import main main

Greetings:  
<Greetings>:

    orientation: "vertical"  
    Label:  
        text: root.greeting  
    BoxLayout:  
        orientation: "horizontal"  
        Button:  
            text: '1'  
            on_press: root.btn1()  
        Button:  
            text: '2'  
            on_press: root.btn2()  
#:导入主
问候语:
:
方向:“垂直”
标签:
文本:root.greeting
盒子布局:
方向:“水平”
按钮:
正文:“1”
按:root.btn1()
按钮:
正文:“2”
按:root.btn2()

在返回根控件之前,只需调用
btn1

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
from kivy.lang import Builder


Builder.load_string('''
<Greetings>:
    orientation: "vertical"

    Label:
        text: root.greeting
    BoxLayout:
        orientation: "horizontal"

        Button:
            text: '1'
            on_press: root.btn1()
        Button:
            text: '2'
            on_press: root.btn2()
''')


class Greetings(BoxLayout):
    greeting = StringProperty()

    def btn1(self):
        self.greeting = 'Hello.' 

    def btn2(self): 
        self.greeting = 'Good-bye.' 

class GreetingApp(App):
    def build(self):
        root = Greetings()
        root.btn1()

        return root

GreetingApp().run()
从kivy.app导入应用
从kivy.uix.boxlayout导入boxlayout
从kivy.properties导入StringProperty
从kivy.lang导入生成器
Builder.load_字符串(“”)
:
方向:“垂直”
标签:
文本:root.greeting
盒子布局:
方向:“水平”
按钮:
正文:“1”
按:root.btn1()
按钮:
正文:“2”
按:root.btn2()
''')
课堂问候语(BoxLayout):
greeting=StringProperty()
def btn1(自身):
self.greeting='Hello'
def btn2(自身):
自我问候=‘再见’
班级迎宾应用程序(应用程序):
def生成(自):
root=问候语()
root.btn1()
返回根
GreetingApp().run())

每次创建类的实例时,
\uuuu init\uuu
方法都会运行。
所以,无论您在创建对象时想做什么,都可以在
\uuuu init\uuuu
中输入。启动对象。
把这个放在你的问候课上

def __init__(self, **kwargs):
    super(Greetings, self).__init__(**kwargs)
    self.btn1()

然后在创建对象时调用它。

代码也可以正常工作。谢谢我会尽力理解它在做什么。@user9037109更新了一些解释。如果需要更多解释,请告诉我。谢谢你的补充解释。我只是想知道为什么第一个论点(问候语)是必要的。他们说显式比隐式好,在Python3中它是可选的。谢谢你的一切。@user9037109你很好。是的,这就是在Python2.7中调用super的方式。我看不出你在使用python 3。