Как создать бесконечный цикл python tkinter, если mainloop() не даёт ему исполняться?

Мне нужно сделать цикл (или что-то другое), который будет каждые 100 мс проверять, какой элемент Listbox сейчас выделен.
Если поставить бесконечный цикл перед mainloop(), то окно не покажется, пока не завершится цикл (а он бесконечный), но если поставить его после mainloop(), то он запустится после выполнения mainloop() (этот метод тоже имеет внутри бесконечный цикл).

Я пробовал запускать разные потоки с помощью Thread из библиотеки threading, но почему то он не захотел запускать два потока одновременно и ждал, когда закончится первый цикл, чтобы запустить второй, который я сделал в другом потоке.

У меня получился вот такой отрывок из кода:

from tkinter import *
from tkinter import ttk
import os
import time
from threading import Thread

SMAS = Tk()
SMAS.geometry('300x300')

'Дальше шёл код, для создания виджетов в окне'

os.chdir('/')
lvar = os.listdir(/) #Просто путь к каталогу
Slvar = StringVar(value = lvar)
systems = Listbox(listvariable = Slvar)
systems.place(relheight = 1.0, relwidth = 0.25, relx = 0.0, rely = 0.0, anchor = (NW))

state = system.curselection()

def check():
    global state
    while True:
        if state != systems.curselection():
            print(systems.curselection())
            state = systems.curselection()
            time.sleep(0.1)
flow = Tread(target = check())
flow.start()

SMAS.mainloop()

Но почему-то вывод был такой:

()
()
()
()
()#И так до бесконечности

Ответы (2 шт):

Автор решения: eri

Цикл у Вас запустился нормально, но переменная state не связана с виджетом.

Её нужно обновлять при изменении значений. А также (если уже обновляете её) стоит указать что эта переменная глобальная и там где вы её обновляете.

→ Ссылка
Автор решения: S. Nick

Я не уверен, что правильно понимая то, что вы хотите делать.
Я полностью согласен с комментарием @CrazyElf

Мне кажется в вашем случае привязка ListBox к <<ListBoxSelect>> является лучшим событием.

import os
from tkinter import *
from tkinter import ttk


root = Tk()
root.geometry('420x400')

path = 'D:/_Qt/__Qt/img'                    # путь к каталогу
os.chdir(path)
lvar = os.listdir(path)                    

Slvar = StringVar(value = lvar)
systems = Listbox(listvariable = Slvar)
systems.place(relheight = 1.0, relwidth = 0.25, 
    relx = 0.0, rely = 0.0, anchor = (NW))

def check(event):
    global image
    w = event.widget
    ind = int(w.curselection()[0])
    image = PhotoImage(file=w.get(ind))    
    label  = Label(root, bg="white", image=image)  
    label.place(x=110, y=10, width=300, height=300)

systems.bind("<<ListboxSelect>>", check)                    # +++

root.mainloop()

введите сюда описание изображения

→ Ссылка