Tkinter продолжает сбой: обновление метки в l oop (StringVar ()) - PullRequest
0 голосов
/ 06 августа 2020

У меня проблема с созданием метки, которая обновляется сама собой. Мое окно Tkinter вылетает после того, как я использую while l oop. Насколько мне известно, я не создаю несколько меток и не складываю их друг над другом, что могло бы заставить программу взламывать sh, а не обновлять метку. Что я могу сделать лучше? Заранее спасибо !!

С l oop:

def testfunction():
    
    while True :
        f = open("exchange.txt", "r")
        insert = f.read()
        f.close()

        if insert != var:
    
            var.set(insert)
        
      
root = Tk()
var = StringVar()
var.set("start")

root.geometry("1920x150+-10+-35")

frame_main = Frame(root, bg="black")
frame_main.place(relwidth=1, relheight=1, relx=0, rely=0)

label = Label(root,width=10,textvariable=var, font='Helvetica 14 bold',bg="black", fg="yellow")

label.place(relwidth=0.9, relheight=0.9, relx=0.05, rely=0.1)

root.after(200, testfunction)

root.mainloop()

ВАЖНОЕ РЕДАКТИРОВАНИЕ: Все это происходит, когда я открываю его с помощью этого скрипта.

# writes down:
subprocess.Popen("python -i tkinter_samentha_tricks.py")
while True:

    r = random.randint(1,6)
    f = open("exchange.txt", "w+")
    if r==1 or r==2:
    f.write("1 or 2")
    f.close
    print(r)

1 Ответ

0 голосов
/ 06 августа 2020

Использование while l oop заблокирует tkinter от обновления виджетов, вместо этого используйте after():

def testfunction():
    try:
        with open("exchange.txt", "r") as f:
            insert = f.read()
            if insert != var.get():
                var.set(insert)
    except FileNotFoundError:
        #print('file not found')
        pass
    root.after(100, testfunction)
...