Я бессовестно украл некоторый код из этого ответа, просто как основу для некоторого tkinter
кода: Как выровнять метку, запись в tkinter
Следующий код адаптирует это кимеют Queue
и Thread
, которые запускаются только после нажатия кнопки.
* Thread
связывается обратно с mainloop
через Queue
, который опрашивается вызовами на root.after()
from tkinter import *
from threading import Thread
from queue import Queue
from time import sleep
from random import randint
root = Tk()
root.geometry("583x591+468+158")
root.title("NOKIA _ANSI Performance")
root.configure(borderwidth="1")
root.configure(relief="sunken")
root.configure(background="#dbd8d7")
root.configure(cursor="arrow")
root.configure(highlightbackground="#d9d9d9")
root.configure(highlightcolor="black")
Label3 = Label(root)
Label3.configure(text='''Device IP Address :''')
Label3.pack()
Label5 = Label(root)
Label5.configure(text='''Username :''')
Label5.pack()
Entry5 = Entry(root)
Entry5.pack()
th = None
q = Queue()
def run_me(q):
sleep(5)
q.put(randint(1, 99))
def check_queue():
if not q.empty():
item = q.get()
Label5.configure(text=str(item))
root.after(200, check_queue)
def do_thread():
global th
th = Thread(target=run_me, args=(q,))
th.start()
Button1 = Button(root)
Button1.configure(pady="0")
Button1.configure(text='''NEXT''')
Button1.configure(command=do_thread)
Button1.pack()
root.after(200, check_queue)
mainloop()
mainloop()
не блокируется ни Thread
, ни опросом, который check_queue()
делает.