«on_start» никогда не вызывается при запуске программы, а «filter».
Я не понимаю, почему «фильтр» работает, а «on_start» - нет.
Может ли кто-нибудь помочь мне здесь?
class Principal(Screen):
def on_start(self):
conn = sqlite3.connect("data.db", 5)
c = conn.cursor()
lista = c.execute('''SELECT * FROM blackbelts''').fetchall()
for e in lista:
self.ids.lista.add_widget(ThreeLineListItem(text=e[1], secondary_text=e[2], tertiary_text=e[3]))
return print(lista)
def filter(self, termo):
if termo in self.ids.listaitem.text or termo in self.ids.listaitem.secondary_text:
#self.on_start()
print("termo encontrado")
else:
print("termo não encontrado")
Обновленный и полный код в соответствии с запросом:
from kivymd.app import MDApp
from kivy.app import Builder
import json
import sqlite3
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.uix.list import MDList, ThreeLineListItem
class Principal(Screen):
def updatelist(self):
conn = sqlite3.connect("data.db", 5)
c = conn.cursor()
lista = c.execute('''SELECT * FROM blackbelts''').fetchall()
for e in lista:
self.ids.lista.add_widget(ThreeLineListItem(text=e[1], secondary_text=e[2], tertiary_text=e[3]))
return
def filtrar(self, termo):
if termo in self.ids.listaitem.text or termo in self.ids.listaitem.secondary_text:
self.ids.lista.clear_widgets()
self.updatelist()
print("termo encontrado")
else:
print("termo não encontrado")
def on_enter(self, *args):
print("tela entrou")
return
class Segunda(Screen):
pass
class Terceira(Screen):
def adicionar(self, nome, faixa, academia, time, datagraduacao):
conn = sqlite3.connect("data.db",5)
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS blackbelts (ID INTEGER, nome TEXT, apelido TEXT, academia TEXT,
time TEXT,datagraduacao TEXT, PRIMARY KEY(ID, nome) )''')
conn.commit()
params = nome, faixa, academia, time, datagraduacao
c.execute('''INSERT OR IGNORE INTO blackbelts VALUES(NULL,?,?,?,?,?)''', params)
conn.commit()
conn.close()
return True
class BlackBeltAPP(MDApp):
def build(self):
KV = Builder.load_file("blackbelt.kv")
return KV
if __name__ == '__main__':
BlackBeltAPP().run()
это дает мне getAtrr ошибка выглядит следующим образом:
Файл "/Users/cassio/PycharmProjects/profjiu/main.py", строка 17, в списке обновлений self.ids.lista.add_widget (ThreeLineListItem (text = e [1], second_text = e [2], tertiary_text = e [3])) Файл "kivy / properties.pyx", строка 863, в kivy.properties.ObservableDict. getattr AttributeError: 'супер' объект не имеет атрибута ' GetAttr