我正在使用屏幕管理器,并希望在不使用.kv文件的情况下将小部件添加到屏幕子类中。
class MainMenu(Screen):
def __init__(self, **kwargs):
gLayout = GridLayout()
gLayout.add_widget(Button(text = 'test'))
class Sis(App):
def build(self):
root = ScreenManager()
root.add_widget(MainMenu(name = 'mainMenu'))
root.current = 'mainMenu'
return root
Sis().run()
当我尝试运行上面的代码时,我得到(pygame parachute) Segmentation Fault
。
如果我在.kv文件中创建布局,它可以正常工作。
我试过摆弄on_pre_enter
和on_enter
,但我很确定我错了。
感谢任何帮助。
答案 0 :(得分:2)
您忘记调用MainMenu类的父构造函数:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
class MainMenu(Screen):
def __init__(self, **kwargs):
super(MainMenu, self).__init__(**kwargs)
self.add_widget(Button(text = 'test'))
class Sis(App):
def build(self):
root = ScreenManager()
root.add_widget(MainMenu(name = 'mainMenu'))
root.current = 'mainMenu'
return root
Sis().run()