TypeError:函数接受1个位置参数,但为2个提供了kivy python

TypeError:函数接受1个位置参数,但为2个提供了kivy python,python,function,kivy,typeerror,Python,Function,Kivy,Typeerror,我尝试在self之后添加实例,但仍然不起作用 这是错误消息 File "kivy\_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch File "kivy\_event.pyx", line 1214, in kivy._event.EventObservers.dispatch File "kivy\_event.pyx", line 1138, in ki

我尝试在self之后添加实例,但仍然不起作用

这是错误消息

File "kivy\_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch

File "kivy\_event.pyx", line 1214, in kivy._event.EventObservers.dispatch

File "kivy\_event.pyx", line 1138, in kivy._event.EventObservers._dispatch

TypeError: sss() takes 1 positional argument but 2 were given
下面是完整的kivy python代码

import kivy

from kivy.uix.widget import Widget

from kivy.properties import ObjectProperty

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

from kivy.uix.screenmanager import ScreenManager, Screen



class Touch(Widget):

    def __init__(self, **kwargs):

        super(Touch, self).__init__(**kwargs)

        self.cols = 1

        self.Rc1 = Button(text="Submit", font_size=40)

        self.Rc1.bind(on_press=self.sss)

        self.add_widget(self.Rc1)


    def sss(self):

        self.Rc1 = Button(text="Push Me !",

                          font_size="20sp",

                          background_color=[1, 0, 0, 1],

                          color=(1, 1, 1, 1),

                          size=(32, 32),

                          size_hint=(.2, .2),

                          pos=(300, 250))

class MyApp(App):

    def build(self):

        return Touch()


if __name__ == "__main__":

    MyApp().run()

当您单击按钮时,它将使用一些信息执行您的函数。在不同的GUI中,它可以使用不同的信息。在一些GUI中,它可以是关于事件的信息,在其他GUI中,它可以是关于小部件的信息,等等

Kivy
发送有关单击的小部件的信息,您必须接收它

def sss(self, widget):

如果要更改现有的
按钮
,则不要创建新按钮-如果将其分配给同一变量,则不会更改现有按钮。您必须使用
add\u widget()

您在
self.Rc1
中已有按钮,因此可以执行以下操作

def sss(self, widget):
    self.Rc1.text = "Push Me !"
    self.Rc1.font_size = "20sp"
    self.Rc1.background_color = [1, 0, 0, 1]
    self.Rc1.color = (1, 1, 1, 1)
    self.Rc1.size = (32, 32)
    self.Rc1.size_hint = (.2, .2)
    self.Rc1.pos = (300, 250)
def change_button(self, widget):
    widget.text = "Push Me !"
    widget.font_size = "20sp"
    widget.background_color = [1, 0, 0, 1]
    widget.color = (1, 1, 1, 1)
    widget.size = (32, 32)
    widget.size_hint = (.2, .2)
    widget.pos = (300, 250)
但更有趣的是,您还可以在
sss(self,widget)中获得这个小部件:
,您可以这样做

def sss(self, widget):
    self.Rc1.text = "Push Me !"
    self.Rc1.font_size = "20sp"
    self.Rc1.background_color = [1, 0, 0, 1]
    self.Rc1.color = (1, 1, 1, 1)
    self.Rc1.size = (32, 32)
    self.Rc1.size_hint = (.2, .2)
    self.Rc1.pos = (300, 250)
def change_button(self, widget):
    widget.text = "Push Me !"
    widget.font_size = "20sp"
    widget.background_color = [1, 0, 0, 1]
    widget.color = (1, 1, 1, 1)
    widget.size = (32, 32)
    widget.size_hint = (.2, .2)
    widget.pos = (300, 250)
这样,您就可以对不同的按钮使用相同的功能


你让我们猜错在哪里。请更新问题以包含完整的错误消息回溯。文件“kivy_event.pyx”,第703行,在kivy中。_event.EventDispatcher.dispatch文件“kivy_event.pyx”,在kivy中第1214行。_event.eventobsers.dispatch文件“kivy_event.pyx”,在kivy中第1138行。_event.eventobsers._分派类型错误:sss()接受1个位置参数,但有2个被赋予必须添加
,*args
sss()
的args列表中。谢谢,John Anderson,错误消息消失了,但我在sss中的函数仍然没有执行或以其他方式执行,我的按钮不会更改其颜色。您可以使用
self.Rc1
访问现有按钮并更改其值-可能是
self.Rc1.color=…