You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy应用调用自定义GridLayout类后显示空白界面问题

解决Kivy自定义GridLayout返回空白界面的问题

你的代码里存在一个低级拼写错误,直接导致界面空白:自定义MyGridLayout类里的构造函数写成了__int__,而Python类的构造函数标准写法是__init__。这个错误会让添加控件的代码完全不会被执行——因为__int__不是类实例化时会自动调用的方法。

修正后的代码如下:

import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button


class MyGridLayout(GridLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # 可选:设置列数让布局更美观,默认cols为1
        self.cols = 2
        self.add_widget(Label(text='label'))
        self.name = TextInput(multiline=False)
        self.add_widget(self.name)
        self.submit = Button(text="submit")
        self.add_widget(self.submit)


class MyApp(App):
    def build(self):
        return MyGridLayout()

if __name__ == '__main__':
    MyApp().run()

补充说明

  • 修正构造函数拼写后,实例化MyGridLayout时会自动执行__init__方法,里面的控件会被正确添加到布局中,界面就能正常显示内容。
  • 给GridLayout设置cols属性可以让控件按多列排列,避免所有控件垂直堆叠在一列里,提升界面可读性。

内容的提问来源于stack exchange,提问作者Davinder Singh Puar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:40:24