TypeError: add_widget() missing 1 required positional argument: 'screen'
如何解决此错误?还是我必须改变什么? 我对此有些陌生,没有其他问题了吗?
import kivy
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
kivy.require("1.9.0")
class Jan(GridLayout, Screen):
pass
class Feb(GridLayout, Screen):
pass
class WindowManager(ScreenManager):
pass
WindowManager.add_widget(Jan(name='Jan'))
WindowManager.add_widget(Feb(name='Feb'))
class CalenderApp(App):
def build(self):
return WindowManager()
customWidget = CalenderApp()
if __name__ == "__main__":
customWidget.run()
我认为问题出在包含.add_widget
的行中。
File "C:/Users/Chris/PycharmProjects/untitled/venv/DayMap.py", line 25, in <module>
WindowManager.add_widget(Jan(name='Jan'))
TypeError: add_widget() missing 1 required positional argument: 'screen'
答案 0 :(得分:0)
基本上,在python中,应在对象obj.function(params)
上调用类函数。
这是因为类函数中的第一个参数是self
。并且obj
作为self
传递。
但是还有另一个选择:class.function(object, parameters)
。在这种情况下,object
将被视为self
。
这就是您在示例中调用add_widget
的方式。但是由于您没有传递WindowManager
对象,因此Jan(name='Jan')
被视为self
。
要修复此问题,您可以例如创建WindowManager对象,然后在该对象上调用方法:
widow_menage = WindowManager()
widow_menage.add_widget(Jan(name='Jan'))