Python kivy中的2页应用程序最好使用什么小部件?

Python kivy中的2页应用程序最好使用什么小部件?,python,kivy,Python,Kivy,我正在尝试创建一个有2个页面的应用程序。我想用一个按钮在两个页面之间切换:当按下一个按钮时,页面切换。我的代码似乎不起作用。我可能错过了什么。 我怎样才能做到这一点 这是我正在使用的代码: <TrafGridLayout>: PageLayout: BoxLayout: orientation: 'vertical' BoxLayout: TextInput:

我正在尝试创建一个有2个页面的应用程序。我想用一个按钮在两个页面之间切换:当按下一个按钮时,页面切换。我的代码似乎不起作用。我可能错过了什么。 我怎样才能做到这一点

这是我正在使用的代码:

<TrafGridLayout>:
    PageLayout:
        BoxLayout:
            orientation: 'vertical'

            BoxLayout:
                TextInput:
                    text: ''

            BoxLayout:
                TextInput:
                    text: ''

            # Calculate and show page #2
            BoxLayout:
                Button:
                    text: "Calculate"
                    on_press:
                        traffictax.calculate(point_from.text, point_to.text)
                        traffictax.show_page(1)

        BoxLayout:
            orientation: 'vertical'

            # Show page #1
            BoxLayout:
                Button:
                    text: "Back to first page"
                    on_press: traffictax.show_page(0)
:
页面布局:
盒子布局:
方向:“垂直”
盒子布局:
文本输入:
文本:“”
盒子布局:
文本输入:
文本:“”
#计算并显示第2页
盒子布局:
按钮:
正文:“计算”
新闻界:
traffictax.calculate(point_from.text,point_to.text)
交通税显示页面(1)
盒子布局:
方向:“垂直”
#显示第1页
盒子布局:
按钮:
文本:“返回到第一页”
按:traffictax.显示页面(0)
问题1 我的代码似乎不起作用。我可能错过了什么

问题 使用提供的代码运行应用程序时,会在左下角显示一个小窗口

根本原因
  • 类规则
    缺少
    cols
    属性
  • PageLayout
    中,通过从右侧或左侧的边界区域滑入,可以从一个页面切换到下一个页面。因此,在按下按钮时使用
    按钮
    小部件的
    事件并不是最佳做法
  • GridLayout必须始终至少有一个输入约束: 或者

    该类用于创建简单的多页 布局,以允许从一页轻松翻转到另一页的方式 使用边框

    从一个页面切换到下一个页面是通过从 右侧或左侧的边界区域

    解决方案-千伏 将
    cols:1
    添加到类规则中,

    片段 试验电压(千伏)
    #:kivy 1.10.0
    :
    首页:
    id:第1页
    第二页:
    :
    名称:“第一页”
    盒子布局:
    方向:“垂直”
    盒子布局:
    标签:
    文本:“指向:
    文本输入:
    id:点_从
    文本:“”
    盒子布局:
    标签:
    文本:“指向:”
    文本输入:
    id:指向
    文本:“”
    #计算并显示第2页
    盒子布局:
    按钮:
    正文:“计算”
    新闻界:
    root.calculate(点从.text,点到.text)
    root.manager.current=“第二页”
    :
    名称:“第二页”
    盒子布局:
    方向:“垂直”
    #显示第1页
    盒子布局:
    按钮:
    文本:“返回到第一页”
    按:root.manager.current=“第一页”
    
    输出

    <TrafGridLayout>:
        cols: 1
    
        PageLayout:
    
    from kivy.app import App
    from kivy.uix.screenmanager import ScreenManager, Screen
    
    
    class ScreenManagement(ScreenManager):
        pass
    
    
    class FirstPage(Screen):
    
        def calculate(self, point_from, point_to):
            print("point_from={0}, point_to={1}".format(point_from, point_to))
    
    
    class SecondPage(Screen):
        pass
    
    
    class TestApp(App):
        title = "Login Screen"
    
        def build(self):
            return ScreenManagement()
    
    
    if __name__ == "__main__":
        TestApp().run()
    
    #:kivy 1.10.0
    
    <ScreenManagement>:
        FirstPage:
            id: page1
        SecondPage:
    
    <FirstPage>:
        name: "first_page"
    
        BoxLayout:
            orientation: 'vertical'
    
            BoxLayout:
                Label:
                    text: "Point From:"
                TextInput:
                    id: point_from
                    text: ''
    
            BoxLayout:
                Label:
                    text: "Point To:"
                TextInput:
                    id: point_to
                    text: ''
    
            # Calculate and show page #2
            BoxLayout:
                Button:
                    text: "Calculate"
                    on_press:
                        root.calculate(point_from.text, point_to.text)
                        root.manager.current = "second_page"
    
    
    <SecondPage>:
        name: "second_page"
    
        BoxLayout:
            orientation: 'vertical'
    
            # Show page #1
            BoxLayout:
                Button:
                    text: "Back to first page"
                    on_press: root.manager.current = "first_page"