Python 如何在没有kv文件的情况下打开新的kivy屏幕?

Python 如何在没有kv文件的情况下打开新的kivy屏幕?,python,kivy,Python,Kivy,我需要打开一个新的屏幕后,点击任何按钮,并关闭主屏幕。有可能吗 逻辑: if i click in b4 do > close the MAIN SCREEN and open a new empty screen. 我在互联网上尝试了一些教程,但我不想使用kv文件 import kivy from kivy.app import App from kivy.uix.label import Label from kivy.uix.gridlayout import GridLayout

我需要打开一个新的屏幕后,点击任何按钮,并关闭主屏幕。有可能吗

逻辑:

if i click in b4 do > close the MAIN SCREEN and open a new empty screen.
我在互联网上尝试了一些教程,但我不想使用kv文件

import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen

class Grid(GridLayout):
    def __init__(self, **kwargs):

        super(Grid, self).__init__(**kwargs)
        self.rows= 3

        self.title = Label(text='MAIN SCREEN')
        self.add_widget(self.title)

        self.MainGrid = GridLayout()
        self.MainGrid.cols = 2

        self.b4 = Button(text="#b4")
        self.MainGrid.add_widget(self.b4)
        self.b4.bind(on_press=self.newScreen)

        self.add_widget(self.MainGrid)

    def newScreen(self, instance):
        pass

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


if __name__ == "__main__":
    MyApp().run()

你没有任何屏幕,所以你不能改变它,你有一个主窗口。解决方案是将ScreenManager设置为顶层,添加必要的屏幕,在第一个屏幕中添加Grid类的对象,并进行绑定,以便将“current”属性更改为要显示的屏幕名称

导入kivy
从kivy.app导入应用程序
从kivy.uix.label导入标签
从kivy.uix.gridlayout导入gridlayout
从kivy.uix.button导入按钮
从kivy.uix.screenmanager导入screenmanager,屏幕
类网格(网格布局):
定义初始(自我,**kwargs):
超级(网格、自组织)。\uuuuu初始化(**kwargs)
self.rows=3
self.title=标签(text=“主屏幕”)
self.add_小部件(self.title)
self.MainGrid=GridLayout()
self.MainGrid.cols=2
self.b4=按钮(text=“#b4”)
self.MainGrid.add_小部件(self.b4)
self.add_小部件(self.MainGrid)
类MyScreenManager(屏幕管理器):
定义初始(自我,**kwargs):
超级(MyScreenManager,self)。\uuuu初始化(**kwargs)
self.main\u screen=screen(name=“main\u screen”)
self.new\u screen=屏幕(name=“new\u screen”)
self.add_小部件(self.main_屏幕)
self.add\u小部件(self.new\u屏幕)
grid=grid()
grid.b4.bind(在屏幕上按=self.change)
self.main\u screen.add\u小部件(网格)
def更改屏幕(自身,*参数):
self.current=“新建屏幕”
类别MyApp(应用程序):
def生成(自):
返回MyScreenManager()
如果名称=“\uuuuu main\uuuuuuuu”:
MyApp().run()

什么是主屏幕?主屏幕“-”,第一个应用程序屏幕。显示按钮