向.py fi中的屏幕子类添加小部件

2024-04-20 14:03:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是一个屏幕管理器,我想在不使用.kv文件的情况下向screen子类添加小部件。在

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和{},但我很肯定我用错了。在

感谢任何帮助。在


Tags: 文件selfadd管理器屏幕def情况root
1条回答
网友
1楼 · 发布于 2024-04-20 14:03:43

您忘记调用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()

相关问题 更多 >