Приложению Python tkinter требуется переменная, которая на данный момент не существует

#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 , like var=None , а затем позже проверьте с if помощью, like if var: #do something

2. » Я получил сообщение об ошибке, что «функция уже определена». «. Ошибка связана с тем, что имя вашей переменной и имя функции совпадают.

Ответ №1:

Я получил сообщение об ошибке, что «функция уже определена»

Как сказал Cool Cloud:
У вас есть функция с именем selected_project и переменная с именем selected_project тоже. Измените имя вашей функции или имя переменной, и оно будет исправлено.
Вы объявили selected_project как None, но после этого вы объявили selected_project как функцию. so selected_project — это функция, и это больше не значение, и вы пытаетесь изменить имя своей функции внутри своей функции, и это невозможно.