Python3: Проблема вывода элементов списка в окно GUI
Возникла идея написать программку (или скорее небольшой скрипт) следующего характера.
Допустим у нас есть несколько автобусных остановок. Я хочу узнать во сколько будет ближайший (и последующие) автобус на конкретной остановке.
Например я хочу узнать во сколько будет ближайший (и последующие) автобус на остановке "N". Для этого в окне программы я должен нажать на кнопку с наименованием данной остановки и мне в окне должен выйти результат в столбик времён прибытия автобуса, начиная с текущего времени. Для этого в программе реализована функция, которая получает текущее системное время и сравнивает его в временами из списка и показывает все, которые больше текущего.
Если исполнить программу в консоли без GUI интерфейса, то всё выводится правильно. Всё работает так, как мне нужно. Пример на фото:
Далее я начинаю заворачивать всё это дело в GUI интерфейс, добавлять кнопки и т.д. Для примера я взял одну остановку и один автобус, следовательно одна кнопка.
Но в итоге при выполнении программы в окне вместо списка времён как в консоли почему-то выводится только последнее время в списке (время последнего рейса на данной остановке). В программировании я практически полный новичок. Это можно сказать пожалуй мой первый более менее осознанный полноценный проект. Поэтому из-за нехватки знаний не могу продвинуться в проекте и не могу решить эту проблему. Пытался решить разными способами. Добавлял вывод i в отдельный список и пытался вывести список - все равно выводится только последнее время из списка (последняя итерация). Не могу пока сообразить почему так и как правильно сделать. А так же еще одна проблема в том, что когда запускаешь программу, то результат выводится еще до нажатия на кнопку.
Код программы:
# Переменные - время прибытия автобуса на остановку
Ostanovka = ['07:10', '07:59', '08:00', '08:49', '08:50', '09:39', '12:10', '12:59', '13:00', '13:49', '13:50', '14:39', '17:10', '17:59', '18:00', '18:49']
import tkinter as tk
from tkinter import *
# Функция, возвращающая текущее время в формате "HH:MM"
def time():
from datetime import datetime
now = datetime.now()
current_time = now.strftime("%H:%M")
return current_time
# Функция показывает список времён прибытия автобуса начиная с текущего времени
def BusComingTimeList(self):
for i in self:
if i > time():
lbl = Label(master, text=i)
lbl.grid(row=2, column=0)
# Основное окно и его размеры
master = tk.Tk()
master.geometry("600x400")
# Создание и расположение кнопки
button = tk.Button(master, text="Остановка", width=18, height=5,
command=BusComingTimeList(Ostanovka))
button.grid(row=1, column=0)
# Зацикливание основного окна
tk.mainloop()
Это то, что у меня получается в итоге (до нажатия на кнопку)

