为什么 kivy 应用程序中没有显示下一个屏幕?

Why doesn't the next screen show up in kivy app?

我期待下面的 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()

虽然人们似乎提倡使用 .kv 文件而不是使用纯文件 Python,但我发现在出现问题时不显示任何错误非常令人沮丧。

Appbuild() 方法预期 return 一个 Widget 将成为 Widget 树的根 App,但你的 return 是 App 本身。我怀疑这会导致问题。但是,您的代码不起作用,因为您没有设置 Screens 的名称。这是您的 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()
""")

此外,您 GirisEkrani2id 实际上是在 Button 上设置的。