将 Kivy 按钮链接到构建器上的功能
Linking a Kivy Button to Function on Builder
我想在屏幕上附加一个按钮到一个函数,但是每次下面都显示错误
AttributeError: 'MDFlatButton' object has no attribute 'plus_drive'
这是一个包含字符串页面的帮助文件
screen_helper = """
Screen:
canvas:
RoundedRectangle:
pos: self.pos
size: self.size
radius: [25, 0, 0, 0]
ScreenManager:
clearcolor:[0, 1, 0, 1]
MenuScreen:
ransomwareScreen:
keyScreen:
<MenuScreen>:
name:'menu'
MDBoxLayout:
orientation: "vertical"
MDToolbar:
title: "Title"
MDBoxLayout:
MDNavigationRail:
id: rail
use_resizeable: True
MDNavigationRailItem:
icon: "comment-account"
text: "profile"
MDNavigationRailItem:
icon: "security"
text: "security"
on_touch_up : root.manager.current = 'ransomware'
MDNavigationRailItem:
icon: "folder-key"
text: "folder-key"
on_press : root.manager.current = 'key_file'
<ransomwareScreen>:
name: 'ransomware'
MDList:
OneLineListItem:
text : "item"
MDFlatButton:
text : "salam"
pos_hint: {"center_x": .9, "center_y": .1}
on_release : self.plus_drive
MDBoxLayout:
orientation: "vertical"
MDToolbar:
title: "demo"
MDBoxLayout:
MDNavigationRail:
id: rail
use_resizeable: True
MDNavigationRailItem:
icon: "comment-account"
text: "profile"
on_release : root.manager.current = 'menu'
MDNavigationRailItem:
icon: "security"
text: "security"
on_release : root.manager.current = 'ransomware'
MDNavigationRailItem:
icon: "folder-key"
text: "folder-key"
on_release : root.manager.current = 'key_file'
<keyScreen>:
name: 'key_file'
OneLineListItem:
id : "drive"
MDBoxLayout:
orientation: "vertical"
MDToolbar:
title: "demo"
MDBoxLayout:
MDNavigationRail:
id: rail
use_resizeable: True
MDNavigationRailItem:
icon: "comment-account"
text: "profile"
on_release : root.manager.current = 'menu'
MDNavigationRailItem:
icon: "security"
text: "security"
on_release : root.manager.current = 'ransomware'
MDNavigationRailItem:
icon: "folder-key"
text: "folder-key"
on_release : root.manager.current = 'key_file'
"""
和我的 运行 应用代码:
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
from helper import *
class MenuScreen(Screen):
pass
class ransomwareScreen(Screen):
def plus_drive(self , obj):
print("salam")
return
class keyScreen(Screen):
pass
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(ransomwareScreen(name='ransomware'))
sm.add_widget(keyScreen(name='key_file'))
class DemoApp(MDApp):
def build(self):
screen = Builder.load_string(screen_helper)
return screen
DemoApp().run()
MDFlatButton:
text : "salam"
pos_hint: {"center_x": .9, "center_y": .1}
on_release : app.plus_drive()
因为您正在调用应用程序中的函数
我想在屏幕上附加一个按钮到一个函数,但是每次下面都显示错误
AttributeError: 'MDFlatButton' object has no attribute 'plus_drive'
这是一个包含字符串页面的帮助文件
screen_helper = """
Screen:
canvas:
RoundedRectangle:
pos: self.pos
size: self.size
radius: [25, 0, 0, 0]
ScreenManager:
clearcolor:[0, 1, 0, 1]
MenuScreen:
ransomwareScreen:
keyScreen:
<MenuScreen>:
name:'menu'
MDBoxLayout:
orientation: "vertical"
MDToolbar:
title: "Title"
MDBoxLayout:
MDNavigationRail:
id: rail
use_resizeable: True
MDNavigationRailItem:
icon: "comment-account"
text: "profile"
MDNavigationRailItem:
icon: "security"
text: "security"
on_touch_up : root.manager.current = 'ransomware'
MDNavigationRailItem:
icon: "folder-key"
text: "folder-key"
on_press : root.manager.current = 'key_file'
<ransomwareScreen>:
name: 'ransomware'
MDList:
OneLineListItem:
text : "item"
MDFlatButton:
text : "salam"
pos_hint: {"center_x": .9, "center_y": .1}
on_release : self.plus_drive
MDBoxLayout:
orientation: "vertical"
MDToolbar:
title: "demo"
MDBoxLayout:
MDNavigationRail:
id: rail
use_resizeable: True
MDNavigationRailItem:
icon: "comment-account"
text: "profile"
on_release : root.manager.current = 'menu'
MDNavigationRailItem:
icon: "security"
text: "security"
on_release : root.manager.current = 'ransomware'
MDNavigationRailItem:
icon: "folder-key"
text: "folder-key"
on_release : root.manager.current = 'key_file'
<keyScreen>:
name: 'key_file'
OneLineListItem:
id : "drive"
MDBoxLayout:
orientation: "vertical"
MDToolbar:
title: "demo"
MDBoxLayout:
MDNavigationRail:
id: rail
use_resizeable: True
MDNavigationRailItem:
icon: "comment-account"
text: "profile"
on_release : root.manager.current = 'menu'
MDNavigationRailItem:
icon: "security"
text: "security"
on_release : root.manager.current = 'ransomware'
MDNavigationRailItem:
icon: "folder-key"
text: "folder-key"
on_release : root.manager.current = 'key_file'
"""
和我的 运行 应用代码:
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
from helper import *
class MenuScreen(Screen):
pass
class ransomwareScreen(Screen):
def plus_drive(self , obj):
print("salam")
return
class keyScreen(Screen):
pass
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(ransomwareScreen(name='ransomware'))
sm.add_widget(keyScreen(name='key_file'))
class DemoApp(MDApp):
def build(self):
screen = Builder.load_string(screen_helper)
return screen
DemoApp().run()
MDFlatButton:
text : "salam"
pos_hint: {"center_x": .9, "center_y": .1}
on_release : app.plus_drive()
因为您正在调用应用程序中的函数