Python 为什么';kivy应用程序中不会出现下一个屏幕吗?

Python 为什么';kivy应用程序中不会出现下一个屏幕吗?,python,kivy,screen,Python,Kivy,Screen,我期待下面的kivy应用程序在我按下然后松开按钮时切换屏幕,但什么都没有发生,终端上也没有错误。当我运行应用程序时,GirisEkrani屏幕会出现,然后当我按下并释放GirisEkrani中的按钮时,下一个屏幕(GirisEkrani2)会出现。你知道怎么做吗 from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen Build

我期待下面的kivy应用程序在我按下然后松开按钮时切换屏幕,但什么都没有发生,终端上也没有错误。当我运行应用程序时,GirisEkrani屏幕会出现,然后当我按下并释放GirisEkrani中的按钮时,下一个屏幕(GirisEkrani2)会出现。你知道怎么做吗

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

Builder.load_string("""
<ekranApp>
    GirisEkrani:
        id: ge
        Button:
            text: "İleri"
            on_release: ge.manager.current = ge.manager.next()

    GirisEkrani2:
        Button:
            id: ge2
            text: "Ileri 2"
            on_release: ge2.manager.current = ge2.manager.next()

    KontrolEkrani:
        id: ke
        Button:
            text: "Geri"
            on_release: ke.manager.current = ke.manager.previous()
""")
class GirisEkrani(Screen):
    pass

class GirisEkrani2(Screen):
    pass

class KontrolEkrani(Screen):
    pass

class ekranApp(App, ScreenManager):
    def build(self):
        #root = ScreenManager()
        #root.add_widget(GirisEkrani(name = "giris_ekrani"))        
        #root.add_widget(GirisEkrani2(name = "giris_ekrani2"))
        #root.add_widget(KontrolEkrani(name = "kontrol_ekrani"))
        return self

if __name__ == "__main__":
    ekranApp().run()
从kivy.app导入应用
从kivy.lang导入生成器
从kivy.uix.screenmanager导入screenmanager,屏幕
生成器。加载\u字符串(“”)
GirisEkrani:
id:ge
按钮:
文本:“İleri”
发布时:ge.manager.current=ge.manager.next()
GirisEkrani2:
按钮:
id:ge2
文本:“Ileri 2”
发布时:ge2.manager.current=ge2.manager.next()
康特罗莱克拉尼:
id:ke
按钮:
文本:“Geri”
发布时:ke.manager.current=ke.manager.previous()
""")
GirisEkrani类(屏幕):
通过
GirisEkrani2级(屏幕):
通过
KontrolEkrani类(屏幕):
通过
类ekranApp(应用程序、屏幕管理器):
def生成(自):
#root=ScreenManager()
#root.add_小部件(GirisEkrani(name=“giris_ekrani”))
#root.add_小部件(GirisEkrani2(name=“giris_ekrani2”))
#root.add_小部件(KontrolEkrani(name=“kontrol_ekrani”))
回归自我
如果名称=“\uuuuu main\uuuuuuuu”:
ekranApp().run()
虽然人们似乎提倡使用.kv文件而不是使用纯Python,但我发现当某些东西不起作用时没有出现错误是非常令人沮丧的。

the
build()
应用程序
方法应返回一个
小部件
,它将是你的
应用程序
小部件
树的根,但你的方法返回的是
应用程序
本身。我怀疑那会引起问题。但是,您的代码不起作用,因为您没有设置
屏幕的名称。以下是您的
kv
的更正版本:

Builder.load_string("""
<ekranApp>:
    GirisEkrani:
        id: ge
        name: "giris_ekrani"
        Button:
            text: "İleri"
            on_release: ge.manager.current = ge.manager.next()

    GirisEkrani2:
        id: ge2
        name: "giris_ekrani2"
        Button:
            text: "Ileri 2"
            on_release: ge2.manager.current = ge2.manager.next()

    KontrolEkrani:
        id: ke
        name: "kontrol_ekrani"
        Button:
            text: "Geri"
            on_release: ke.manager.current = ke.manager.previous()
""")
Builder.load\u字符串(“”)
:
GirisEkrani:
id:ge
姓名:“giris_ekrani”
按钮:
文本:“İleri”
发布时:ge.manager.current=ge.manager.next()
GirisEkrani2:
id:ge2
姓名:“giris_ekrani2”
按钮:
文本:“Ileri 2”
发布时:ge2.manager.current=ge2.manager.next()
康特罗莱克拉尼:
id:ke
名称:“kontrol_ekrani”
按钮:
文本:“Geri”
发布时:ke.manager.current=ke.manager.previous()
""")

另外,您的
GirisEkrani2
id
实际上是在运行的
按钮上设置的,但是您能解释一下添加名称如何解决问题吗?我甚至看不到代码中的任何地方使用了这些名称。我只能回显:
当您创建屏幕时,您绝对需要为它指定一个名称
(以粗体显示)。