#python #database #sqlite #tkinter
#python #База данных #sqlite #tkinter
Вопрос:
На данный момент я пытаюсь запрограммировать приложение на python, которое отслеживает мое время, затрачиваемое на разные проекты. Я также использую следующие модули: Sqlite3 и tkinter.
ПРИЛОЖЕНИЕ-графический интерфейс
Справа на изображении вы можете увидеть список моих текущих примеров проектов, которые я хотел бы отслеживать. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что мне нужно выбрать проект в списке, чтобы передать переменную fetch_times
функции, которая запрашивает соответствующие времена из базы данных. Однако мне нужна переменная по умолчанию, которая активируется, прежде чем я получу возможность выбрать проект в списке.
Приведенный ниже код сначала определяет функцию для выбора проекта в моем списке справа на изображении. Другая функция — это цикл, который должен печатать запрошенные данные в списке слева.
def selected_project(event):
global selected_project
index = project_list.curselection()[0]
selected_project = project_list.get(index)
def show_times(selected_project):
for row in db.fetch_times(selected_project):
times_list.insert(END, row)
Следующий код является частью второго файла python, который содержит функции базы данных.
def fetch_times(self, selected_project):
self.cur.execute("SELECT date_day, start_time, stop_time FROM projects WHERE project_name=?",(selected_project,))
rows = self.cur.fetchall()
return rows
Я уже пытался сгенерировать selected_project
переменную по умолчанию, но затем я получил сообщение об ошибке, что «функция уже определена«. Я также думал о реализации оператора IF, который проверяет, существует ли переменная, но я просто не уверен, какое лучшее решение. Это мой первый пост здесь, поэтому я надеюсь, что этот обзор достаточно хорошо описывает мою проблему.
Спасибо за помощь!
Комментарии:
1. В начале установите для переменной значение
None
, likevar=None
, а затем позже проверьте сif
помощью, likeif var: #do something
2. » Я получил сообщение об ошибке, что «функция уже определена». «. Ошибка связана с тем, что имя вашей переменной и имя функции совпадают.
Ответ №1:
Я получил сообщение об ошибке, что «функция уже определена»
Как сказал Cool Cloud:
У вас есть функция с именем selected_project
и переменная с именем selected_project
тоже. Измените имя вашей функции или имя переменной, и оно будет исправлено.
Вы объявили selected_project
как None, но после этого вы объявили selected_project
как функцию. so selected_project
— это функция, и это больше не значение, и вы пытаетесь изменить имя своей функции внутри своей функции, и это невозможно.