我只是想让代码在Python Kivy应用程序中有两个屏幕的地方工作,可以来回切换,而不需要使用.kv文件。
在这个页面上:https://kivy.org/docs/api-kivy.uix.screenmanager.html,从顶部开始的第二个代码块就是我想要完成的,除了我想不使用'Builder.load\u字符串(“”“'节,而只是正常实例化按钮。你知道吗
以下是我的尝试,但我无法让它工作:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
class MenuScreen(Screen):
def build(self):
def switchScreen():
root.manager.current = 'settings'
f = FloatLayout()
button1 = Button(text = "My settings button")
button2 = Button(text = "Back to menu", on_press = switchScreen)
f.add_widget(button1)
f.add_widget(button2)
class SettingsScreen(Screen):
def build(self):
def switchScreen():
root.manager.current = 'menu'
f = FloatLayout()
button1 = Button(text = "My settings button")
button2 = Button(text = "Back to menu", on_press = switchScreen)
f.add_widget(button1)
f.add_widget(button2)
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SettingsScreen(name='settings'))
class MainApp(App):
def build(self):
return sm
if __name__ == '__main__':
MainApp().run()
运行此代码只会创建一个不产生错误的空白页。你知道吗
有没有一种方法可以指定它来绘制一个特定的屏幕,从我丢失的屏幕开始?我不确定我的问题在哪里。你知道吗
你做错了什么:
__init__
方法中,而不是build
self.add_widget(f)
来在创建之后实际使用它*args
而不用担心它。你知道吗kv
了,所以没有根。改用self
。你知道吗把这些放在一起:
相关问题 更多 >
编程相关推荐