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
相关产品推荐
相关产品推荐

