繁体   English   中英

当 ScreenManager 位于 Kivy 中的 Widget 的 BoxLayout 内时,尝试在屏幕之间切换

[英]Trying to change between screens when the ScreenManager is inside a BoxLayout of a Widget in Kivy

我有一个问题,当按下“下一个屏幕”按钮时,它不起作用,我的第一个 Windows 没有更改为 SecondWindow(Screen)..app.root.current='second' 在 kv 中不起作用。文件。 而且我只想更改屏幕的一部分(WindowManager:FirstWindow,SecondWindow)而不是所有 MyLayout .. Mylayout 的部分必须留在那里并且只更改屏幕下方的屏幕。

文件

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.core.spelling import Spelling
from kivy.uix.screenmanager import ScreenManager, Screen


kv= Builder.load_file('test2.kv')

class MyLayout(Widget):
    def spinner_clicked(self,value):
           self.ids.Label1.text= f'You selected: {value}' 



#Definine our different screens
class FirstWindow(Screen):
    pass

class SecondWindow(Screen):
    pass

class WindowManager(ScreenManager):
    pass 


class AwesomeApp(App):
    def build(self):
        return MyLayout()

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

kv文件


<MyLayout>

    BoxLayout:
        orientation:"vertical"
        size: root.width, root.height
        GridLayout:
            cols:3
            rows:3
            

            Spinner:
                id: spinner_id
                text: "Menu"
                values: ["Catalogue","Buy","Payment Methods", "Contact"]
                on_text: root.spinner_clicked(spinner_id.text)

        

            Label:
                id: Label1
                text: "My Panel"

            Button:
                text:"Buy"

    
        #THESE SCREENS ARE NOT CHANGING
        WindowManager:
            FirstWindow:
            SecondWindow:  
    
<FirstWindow>:
    name: "first"
    BoxLayout:
        orientation: "vertical"
        size: root.width, root.height

        Label:
            text: "First Screen"
            font_size: 32

        Button:
            text: "Next Screen"
            font_size: 32
            on_release: 
                app.root.current= "second"
                root.manager.transition.direction= "left" #up

<SecondWindow>:
    name: "second"
    BoxLayout:
        orientation: "vertical"
        size: root.width, root.height

        Label:
            text: "Second Screen"
            font_size: 32

        Button:
            text: "Go Back"
            font_size: 32
            on_release: 
                app.root.current= "first"
                root.manager.transition.direction= "right"

按照我在上一个问题中的建议,将kv中的app.root.current引用更改为root.manager.current

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM