kv语言中的root是python kivy中的哪个属性

2024-06-12 17:45:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我看不到下面的代码

<MenuScreen>:
    BoxLayout:
        Button:
            text: 'Goto settings'
            on_press: root.manager.current = 'settings'
        Button:
            text: 'Quit'

<SettingsScreen>:
    BoxLayout:
        Button:
            text: 'My settings button'
        Button:
            text: 'Back to menu'
            on_press: root.manager.current = 'menu'

当我想把代码翻译成主代码时,就会出错,或者当我想把kv代码翻译成python时

File "F:\kivy\Pashmak.py", line 48
    on_press=lambda instance:self.manager.current='settings')
                                                 ^
SyntaxError: invalid syntax

这是我的主要代码

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen

# Create both screens. Please note the root.manager.current: this is how
# you can control the ScreenManager from kv. Each screen has by default a
# property manager that gives you the instance of the ScreenManager used.
#Builder.load_string("Pashmak.kv")

# Declare both screens
class MenuScreen(Screen):
    def __init__(self,**kwd):
            super(MenuScreen,self).__init__(**kwd)
            self.btn0 = button.Button(text="Go To Setting",
            on_press=lambda instance:self.manager.current='settings')
            self.btn1 = button.Button(text="Quit")
            self.add_widget(self.btn0)
            self.add_widget(self.btn1)

class SettingsScreen(Screen):
    def __init__(self,**kwd):
            super(SettingsScreen,self).__init__(**kwd)
            self.btn0 = button.Button(text="My Settings Button")
            self.btn1 = button.Button(text="Back to menu" ,
            on_press=lambda instance:root.manager.current="menu")

class TestApp(App):

    def build(self):
        # Create the screen manager
        sm = ScreenManager()
        sm.add_widget(MenuScreen(name='menu'))
        sm.add_widget(SettingsScreen(name='settings'))

        return sm

if __name__ == '__main__':
    TestApp().run()

我将其更改为root,但我不知道这有什么用,我的问题是python文件中的root(root.manager.current),我可以用这种方式更改代码


Tags: the代码textselfsettingsonmanagerbutton
1条回答
网友
1楼 · 发布于 2024-06-12 17:45:12

Jakarta EE(原名Java EE)是一组规范,而不是您下载的东西

您下载的通常是一个应用服务器,它允许您运行按照这些规范编写的应用程序或微服务

有很多应用服务器可供选择,它们实现了该api的特定版本。您可以找到一个列表on the Jakarta EE website

关于使用什么特定实现的建议与StackOverflow无关

相关问题 更多 >