繁体   English   中英

TypeError:run() 缺少 1 个必需的位置参数:'self'

[英]TypeError:run() missing 1 required positional argument: 'self'

我在Windows上pycharm写了一个简单的程序,然后就跑了。 为了获取apk文件,我在虚拟机上安装了ubuntu。 然后我安装了 pip,paycharm,kivy。Qivy 根据他们网站的说明通过终端安装。 我输入代码并收到错误:run() 缺少 1 个必需的位置参数:“self”。 我试着用谷歌搜索,但我真的找不到任何东西。

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout

class Container(FloatLayout):
    pass

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

        return Container()


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

in.kv文件

<Container>:
    Button:
        background_normal: ''
        background_color: 0.5, 0, 1, .5
        size_hint: 0.3, 0.3
        pos_hint: {'center_x' : 0.5 , 'center_y':0.5}
        text:'Push'
        color: 0,1,0.5,1
        on_release:
            self.text = 'on release'

完整的错误回溯

据我所知,.kv 文件不支持多行条目。 on_release 方法需要引用 function,您通常会将其放在小部件 (root.your_function) 或应用程序 (app.your_function) 中。 为了方便起见,我将答案更改为使用 build_string; 像您一样在您的应用程序中使用单独的 .kv 文件是个好主意。

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder

Builder.load_string('''
<Container>:
    Button:
        background_normal: ''
        background_color: 0.5, 0, 1, .5
        size_hint: 0.3, 0.3
        pos_hint: {'center_x' : 0.5 , 'center_y':0.5}
        text:'Push'
        color: 0,1,0.5,1
        # self argument here will be the button object
        on_release: app.button_callback(self)
''')


class Container(FloatLayout):
    pass


class MyApp(App):

    def button_callback(self, my_button):
        print(my_button.text)
        self.count += 1
        my_button.text = f"on_release {self.count}"

    def build(self):
        self.count = 0
        return Container()


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM