将小部件添加到.py文件中的屏幕子类

时间:2013-10-25 20:29:18

标签: python kivy

我正在使用屏幕管理器,并希望在不使用.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_enteron_enter,但我很确定我错了。

感谢任何帮助。

1 个答案:

答案 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()