TypeError: 'str' object is not callable

from kivy.uix.button import Button
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.scrollview import ScrollView
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.metrics import *
from kivy.uix.image import Image
from kivy.uix.label import Label
from kivy.properties import *
from kivy.clock import Clock
class main(BoxLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.orientation = "vertical"
        snf = Label(size_hint_y=.1,text="Sınıf İsmi/Şube")
        self.add_widget(snf)
        gen = ScrollView(size_hint_y=.9)
        self.add_widget(gen)
        genel = BoxLayout(orientation="vertical",size_hint_y=None,height=dp(3500))
        gen.add_widget(genel)
        for i in range(10):
            genel.add_widget(kisi())
class kisi(FloatLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.size_hint = (1,None)
        self.height = dp(350)
        kpp = Image(size_hint=(.3,None),height=dp(100),pos_hint={'x':0,'y':.7125})
        self.add_widget(kpp)
        stnick = Label(size_hint_x=(.7,.1),pos_hint={'x':.5,'y':.4},text=self.öism)
        self.add_widget(stnick)
        self.btn1 = Button(text="Geldi",pos_hint={'x':0,'y':.6},size_hint=(.3,.1))
        self.btn1.bind(on_release=self.renk)
        self.btn2 = Button(text="Gelmedi",pos_hint={'x':0,'y':.5},size_hint=(.3,.1))
        self.btn2.bind(on_release=self.renk2)
        self.btn3 = Button(text="Geç Geldi",pos_hint={'x':0,'y':.4},size_hint=(.3,.1))
        self.btn3.bind(on_release=self.renk3)
        self.add_widget(self.btn1)
        self.add_widget(self.btn2)
        self.add_widget(self.btn3)
        Clock.schedule_interval(self.kont, 1)
    öism =StringProperty("Öğrenci İsmi")
    renk = "0"
    renk1 ="0"
    renk2 ="0"
    def renk(self,b):
        self.btn1.background_color = (1,0,0,1)
        self.renk = "1"
        self.renk1 = "0"
        self.renk2 = "0"
        self.btn2.background_color = (1, 1, 1, 1)
        self.btn3.background_color = (1,1,1,1)
    def renk2(self,b):
        self.btn2.background_color = (1,0,0,1)
        self.btn1.background_color = (1,1,1,1)
        self.btn3.background_color = (1,1,1,1)
        self.renk = "0"
        self.renk1 = "1"
        self.renk2 = "0"
    def renk3(self,b):
        self.renk = "0"
        self.renk1 = "0"
        self.renk2 = "1"
        self.btn2.background_color = (1, 1, 1, 1)
        self.btn1.background_color = (1, 1, 1, 1)
        self.btn3.background_color = (1, 0, 0, 1)
    def kont(self,b):
        if self.renk == "1":
            print("Geldi")
        else:
            pass
class app(App):
    def build(self):
        return main()
if __name__ == "__main__":
    app = app()
    app.run()

amaçladığım şey butonların renginin değiştirilebilmesi ancak başlıkta gördüğünüz hatayı almaktayım aslında burda renk diye ayrı ayrı string vermeden önce denediğim başka bir yöntem vardı :

direk if self.btn1.background_color == (1,0,0,1):
        print("a")

ancak bu yöntem niye çalışmadı bilmiyorum ikisinden herhangi birinin çözümü de işime yarar.Ayrıca sanırım burada remove_widget() ifadesini kullabiirim ancak bunu yaparsam kodun diğer bölümlerini kısıtlayacağı için yapmadım.şimididen teşekkürler yardımlarınız için.

Hatanın "Traceback…"den itibaren olan kısmını atmanız zamandan tasarruf sağlayabilir.

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder

kv = '''
BoxLayout: 
    ToggleButton:
        text:"Bnt1"
        id:_1
        on_state:app.renk_değiştir()
        background_down:""
        background_normal:""
        background_color:1,0,0,1

    Button:
        text:"bnt2"
        id:_2
        on_state:app.renk_değiştir2()
        background_down:""
        background_normal:""
        background_color:0,0,1,1
    Button:
        text:"btn3"
        id:_3

'''
class MyPaintApp(App):
    def build(self):
        return Builder.load_string(kv)

    def renk_değiştir(self):
        if(self.root.ids._1.state == "down"):
            self.root.ids._1.background_color = [1,0,0,1]

        else:
            self.root.ids._1.background_color = [0,1,0,1]

    def renk_değiştir2(self):
        if(self.root.ids._2.state == "normal"):
            self.root.ids._2.background_color = [0,0,1,1]

        else:
            self.root.ids._2.background_color = [1,0.5000,1,1]

if __name__ == '__main__':
    MyPaintApp().run()
hatanı Bulamadım ama Toggle Button Kullanabilirsin

Kodun bir yerinde str objesi cagrilmaya calisiliyor.

bkz: Soru Sorarken Sıkça Düşülen Hatalar #13