Как использовать функции одного класса в теле другого?
Всем доброго! Мне нужно использовать функцию из класса DepartureScreen в теле класса Date_Label Можете подсказать, как это сделать?
class Date_Label(Label):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.cur_touch_pos = 0
def on_touch_down(self, touch):
if self.collide_point(*touch.pos):
self.cur_touch_pos = touch.x
return super().on_touch_down(touch)
def on_touch_up(self, touch):
if self.collide_point(*touch.pos):
global cur_date
if touch.x < self.cur_touch_pos:
one_day = timedelta(1)
cur_date = cur_date - one_day
self.text = cur_date.strftime('%d.%m.%Y')
elif touch.x > self.cur_touch_pos:
one_day = timedelta(1)
cur_date = cur_date + one_day
self.text = cur_date.strftime('%d.%m.%Y')
else:
print('Просто нажал!')
return super().on_touch_up(touch)
class DepartureScreen(Screen):
def __init__(self, **kw):
super().__init__(**kw)
global cur_date
#cur_date = date.today().strftime('%d.%m.%Y')
self.ids.date_lbl.text = str(cur_date.strftime('%d.%m.%Y'))
#self.load_dep_trains_data()
def load_dep_trains_data(self):
global cur_date
self.ids.dep_table_gl.clear_widgets()
#self.ids.dep_table_rl.add_widget(Departure_Table(column_data = [('№ Поезда', 50), ('Прибытие', 50), ('Отправление', 50)]))
chosen_date = self.ids.date_lbl.text
table_name = 'trains_' + chosen_date[0:2] + '_' + chosen_date[3:5] + '_' + chosen_date[6:11]
conn = sqlite3.connect('train_dep_db.db')
curs = conn.cursor()
try:
curs.execute('SELECT * FROM trains_29_02_2024')
except sqlite3.Error as error:
if str(error) == 'no such table: trains_29_02_2024':
print('Ошибка SQL: ' + str(error))
print('Такой таблицы не существует!')
conn.commit()
curs.close()
conn.close()
Заранее спасибо!
Ответы (1 шт):
Тут вообще есть много разных способов, к примеру попробуете следующие : поменяйте классы целиком местами, затем в Date_Label объявите какую-нибудь переменную до функции init и передайте ей значение функции без вызова из другого класса, т.е
func=DepartureScreen.load_dep_trains_data
А теперь спокойно вызывайте эту функцию в вашем классе, так как в переменной func хранится сама функция (если быть точнее, ссылка на функцию так как она имеет тот же объект в памяти, что и сама функция) . К примеру так
self.func()
Проверьте работоспособность, я не проверял, и вообще мне кажется это даже тема не по kivy, а просто по ООП