Python Forum
[Tkinter] Tkinter won't start - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: [Tkinter] Tkinter won't start (/thread-35553.html)



Tkinter won't start - uriel - Nov-16-2021

Hello everyone!
I faced with difficult that when I run this code:

from tkinter import Tk, Canvas

root = Tk()
c = Canvas(root, width=800, height=800, bg='black')
c.pack()
c.create_text(100, 50, anchor='w', fill='orange', font='Arial 28 bold underline', text='....')
[attachment=1380]

...it gives me: Process finished with exit code 0, but Tkinter's window doesn't appear.


RE: Tkinter won't start - deanhystad - Nov-16-2021

It started and then ended quite abruptly. Add root.mainloop() to the end of the program.


RE: Tkinter won't start - Yoriz - Nov-16-2021

When creating a GUI with tkinter you need to have a single mainloop that is called at the point you want your GUI to run.
It creates an infinite loop that runs until the main tkinter window is destroyed.
The mainloop will draw the GUI widgets and react to events such as button presses, as you have seen without it the GUI doesn't function.
from tkinter import Tk, Canvas
 
root = Tk()
c = Canvas(root, width=800, height=800, bg='black')
c.pack()
c.create_text(100, 50, anchor='w', fill='orange', font='Arial 28 bold underline', text='....')
root.mainloop()



RE: Tkinter won't start - uriel - Nov-17-2021

Thanks a lot! I am learning from a book and there is no mention of mainloop on it. Huh


RE: Tkinter won't start - uriel - Nov-17-2021

Also i want to ask about other issue: Did i make a mistake in the code with reading the contents of the file or again with dispaying the lines of the file?

from tkinter import Tk, Canvas
from datetime import date, datetime


def get_events():
    list_events = []
    with open('events.txt', encoding='utf-8') as file:
        for line in file:
            line = line.rstrip('\n')
            current_event = line.split(',')
            event_date = datetime.strptime(current_event[1], '%d/%m/%Y').date()
            current_event[1] = event_date
            list_events.append(current_event)
    return list_events


def days_between_dates(date1, date2):
    time_between = str(date1 - date2)
    number_of_days = time_between.split(' ')
    return number_of_days[0]


root = Tk()
c = Canvas(root, width=800, height=800, bg='black')
c.pack()
c.create_text(100, 50, anchor='w', fill='orange', font='Arial 28 bold underline', text='Календарь ожидания')
root.mainloop()

events = get_events()
today = date.today()

vertical_space = 100

for event in events:
    event_name = event[0]
    days_until = days_between_dates(event[1], today)
    display = '%s через %s дн.' % (event_name, days_until)
    c.create_text(100, 100, anchor='w', fill='light blue', font='Arial 28 bold', text=display)

vertical_space = vertical_space + 30