Python 3.x 如何在Python Kivy中通过调用方法更改屏幕

Python 3.x 如何在Python Kivy中通过调用方法更改屏幕,python-3.x,kivy-language,Python 3.x,Kivy Language,我是kivy的新手,我想通过点击图片来改变我的屏幕。我使用了ButtonBevior并调用了我的类ImageButton的on_press方法,但我不知道该放什么代码。我试着在我的kivy文件上按:screen\u manager.current='window1',但不起作用 Python代码 from kivy.app import App from kivy.uix.screenmanager import ScreenManager, Screen from kivy.uix.float

我是kivy的新手,我想通过点击图片来改变我的屏幕。我使用了ButtonBevior并调用了我的类ImageButton的on_press方法,但我不知道该放什么代码。我试着在我的kivy文件上按:screen\u manager.current='window1',但不起作用

Python代码

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image
from kivy.uix.behaviors import ButtonBehavior


class Window1(Screen):
    pass

class Window2(Screen):
    pass

class WindowManager(ScreenManager):
    pass

class ImageButton(ButtonBehavior, Image):
    def on_press(self):
        # what to call

class Phone(FloatLayout):
    pass


class MyApp(App):
    def build(self):
        return Phone()

if __name__ == '__main__':
    MyApp().run()
<Phone>:
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'top'
        WindowManager:
            id: screen_manager
            size_hint: 1, 0.9
            anchor_y: 'top'
            transition: FadeTransition()
            Window1:
            Window2:

    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'bottom'
        BoxLayout:
            canvas:
                Color:
                    rgba: 228, 241, 254, 1
                Rectangle:
                    size: self.size
            orientation: 'horizontal'
            size_hint: 1, .1
            ImageButton:
                source: 'pic1.png'
                on_press: self.on_press()
            ImageButton:
                source: 'pic2.png'
                on_press: self.on_press()


<Window1>:
    name: 'window1'
    Label:
        text: 'Window1'
<Window2>:
    name: 'window2'
    Label:
        text: 'Window2'
kv文件

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image
from kivy.uix.behaviors import ButtonBehavior


class Window1(Screen):
    pass

class Window2(Screen):
    pass

class WindowManager(ScreenManager):
    pass

class ImageButton(ButtonBehavior, Image):
    def on_press(self):
        # what to call

class Phone(FloatLayout):
    pass


class MyApp(App):
    def build(self):
        return Phone()

if __name__ == '__main__':
    MyApp().run()
<Phone>:
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'top'
        WindowManager:
            id: screen_manager
            size_hint: 1, 0.9
            anchor_y: 'top'
            transition: FadeTransition()
            Window1:
            Window2:

    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'bottom'
        BoxLayout:
            canvas:
                Color:
                    rgba: 228, 241, 254, 1
                Rectangle:
                    size: self.size
            orientation: 'horizontal'
            size_hint: 1, .1
            ImageButton:
                source: 'pic1.png'
                on_press: self.on_press()
            ImageButton:
                source: 'pic2.png'
                on_press: self.on_press()


<Window1>:
    name: 'window1'
    Label:
        text: 'Window1'
<Window2>:
    name: 'window2'
    Label:
        text: 'Window2'
:
主持人安排:
主播:中锋
主播:托普
WindowManager:
id:屏幕管理器
尺寸提示:1,0.9
主播:托普
转换:FadeTransition()
窗口1:
窗口2:
主持人安排:
主播:中锋
主播:“底部”
盒子布局:
画布:
颜色:
rgba:228241254,1
矩形:
大小:self.size
方向:“水平”
大小提示:1、.1
图像按钮:
资料来源:“pic1.png”
on_press:self.on_press()
图像按钮:
资料来源:“pic2.png”
on_press:self.on_press()
:
名称:“window1”
标签:
文本:“Window1”
:
名称:“window2”
标签:
文本:“Window2”

有人在这方面帮我。。我缺少的是我的kv文件我应该放进去

按:app.root.ids.\u screen\u manager.current='window1'

这是解释

解析kv代码时,id字段进入名为ids的dict,该dict存储指向小部件对象的指针

每个kivy规则都有一个用于ID的专用名称空间

细分:

app.root.ids.screen\u管理器

应用程序是你的应用程序

root是根部件,Phone

ids是在根级别定义的id的dict


埃利奥特·加布斯的功劳有人帮我。。我缺少的是我的kv文件我应该放进去

按:app.root.ids.\u screen\u manager.current='window1'

这是解释

解析kv代码时,id字段进入名为ids的dict,该dict存储指向小部件对象的指针

每个kivy规则都有一个用于ID的专用名称空间

细分:

app.root.ids.screen\u管理器

应用程序是你的应用程序

root是根部件,Phone

ids是在根级别定义的id的dict

艾略特·加布斯的功劳