Python KivyMD:如何使用按钮调用函数?

Python KivyMD:如何使用按钮调用函数?,python,kivy,Python,Kivy,我是kivy和kivyMD的新手,我试图调用一个函数来打印用户的电子邮件和密码。在这段代码中,如何绑定函数或在按下按钮时使用? 我尝试使用on_pressed:root.function()方法,但它不起作用,因为我的函数不是在pr emade屏幕管理器中编写的 .PY import... Builder.load_string(""" #:include kv/login.kv #:import utils kivy.utils #:import images_path k

我是kivy和kivyMD的新手,我试图调用一个函数来打印用户的电子邮件和密码。在这段代码中,如何绑定函数或在按下按钮时使用? 我尝试使用on_pressed:root.function()方法,但它不起作用,因为我的函数不是在pr emade屏幕管理器中编写的

.PY

import...
Builder.load_string("""
   #:include kv/login.kv
   #:import utils kivy.utils 
   #:import images_path kivymd.images_path
""")

class MyApp(MDApp):
    def __init__(self, **kwargs):
        self.title = "iKarate"
        self.theme_cls.theme_style = "Light"
        self.theme_cls.primary_palette = "Blue"
        self.sm = ScreenManager()
        super().__init__(**kwargs)

    def build(self):
        self.sm.add_widget(Factory.LoginScreen())

        return self.sm

    def doThis(self):
        email = self.email
        password = self.password
        print(email, password)

if __name__ == "__main__":
    MyApp().run()
.KV

#:kivy 1.11.1
<LoginScreen@Screen>:
    name: "login"

    BackgroundLayer:

    #MDCard:
    MDCard:
        orientation: "vertical"
        size_hint: [0.8, 0.6]
        pos_hint: {"center_x": 0.5, "center_y": 0.6}
        BoxLayout:
            orientation: "vertical"
            MDLabel:
                text: "Welcome to the log in page"
                text_size: self.size
                font_size: 25
                bold: True
                halign: "center"
                valign: "middle"

            Image:
                size_hint_y: 10
                source: "kv/image.png"

            MDTextField:
                id: email
                hint_text: "E-mail"

            MDTextField:
                id: password
                hint_text: "Password"
                password: True

            MDFillRoundFlatButton:
                id: btn
                text: "Sign In"
                width: dp(200)
                pos_hint: {"center_x": .5}
                on_press:print("pressed")

<BackgroundLayer@BoxLayout>:
    orientation: "vertical"
    BoxLayout:
        orientation: "vertical"
        canvas.before:
            Color:
                rgba: utils.get_color_from_hex("#00146e")
            Rectangle:
                pos: 0, self.center_y + self.height/3 - 50
                size: (self.width,70)

    BoxLayout:
        orientation: "horizontal"
#:kivy 1.11.1
:
名称:“登录”
背景层:
#MD卡:
MD卡:
方向:“垂直”
大小提示:[0.8,0.6]
pos_提示:{“center_x”:0.5,“center_y”:0.6}
盒子布局:
方向:“垂直”
MDLabel:
文本:“欢迎进入登录页面”
文本大小:self.size
字体大小:25
黑体字:对
哈利恩:“中心”
valign:“中间”
图片:
尺码提示y:10
资料来源:“kv/image.png”
MDTextField:
id:电子邮件
提示文字:“电子邮件”
MDTextField:
id:密码
提示文字:“密码”
密码:True
MDFillRoundFlatButton:
id:btn
文本:“登录”
宽度:dp(200)
pos_提示:{“center_x”:.5}
按下:打印(“按下”)
:
方向:“垂直”
盒子布局:
方向:“垂直”
在以下情况之前:
颜色:
rgba:utils.get_color_from_hex(“#00146e”)
矩形:
位置:0,自中心+自高度/3-50
尺寸:(自身宽度,70)
盒子布局:
方向:“水平”

按下:打印(“按下”)成功打印“按下”

如果您从
应用程序调用函数,请使用此选项

on_press: app.doThis()
on_press: root.doThis()
如果您从
屏幕
类调用函数,请使用此选项:

on_press: app.doThis()
on_press: root.doThis()

谢谢现在调用了该函数,但未传递文本字段数据。我现在如何通过考试?最好先找例子。就我个人而言,我在screen类中创建了一个方法来提取文本并对其进行处理。代码:self.ids..text。别忘了把答案设为正确答案)我猜出来了。我刚刚在KV文件中调用了doThis(电子邮件、密码),并在python文件中编辑了参数。现在,KV文件使用函数调用本身传递数据