Python tkinter: 정보를 동적으로 표시하는 두 가지 방법 "가장 자세한 답변"

안녕하세요 여러분 Xuan 형제입니다~ 친구가 tkinter 창에서 구성 요소의 데이터를 동적으로 표시하는 방법에 대해 비공개 메시지를 보냈습니다. 오늘은 두 가지 방법을 공유하겠습니다~


1. after() 함수

창 구성요소가 더 적다면 tkinter의 내장 after() 함수와 재귀를 사용하여 동적 표시를 얻을 수 있습니다 .

예:

def update():
    global i
    i += 1
    label1['text'] = str(i)
    label1.after(1000, update)

label1 = tk.Label(root, text='0', width=10)
label1.pack()
label1.after(1000, update)

이런 방식으로 label1의 숫자는 1초마다 1씩 증가 할 수 있습니다 .

after 함수 구문: after(몇 밀리초 후에 함수가 호출됨)

그러나 창이 크고 구성 요소가 많은 경우 재귀를 너무 많이 사용하면 과도한 CPU 사용량이 발생합니다 . 이때는 멀티스레딩이 더 나은 방법이 됩니다.


2. 멀티스레딩

스레딩 라이브러리의 다중 스레드 Thread()를 사용하면 동적 표시를 얻을 수 있습니다.

i = 0

def update():
    global i
    while True:
        i += 1
        label1['text'] = str(i)
        time.sleep(1)

label1 = tk.Label(root, text='0', width=10)
label1.pack()

update_thread = threading.Thread(target=update)
update_thread.start()

또한 label1의 숫자가 매초 1씩 증가 할 수 있습니다 .

스레딩 구문: threading.Thread(대상=함수 호출됨)


3. 완전한 코드


방법 1:

import tkinter as tk

i = 0

def update():
    global i
    i += 1
    label1['text'] = str(i)
    label1.after(1000, update)

root = tk.Tk()
root.title("动态显示")

label1 = tk.Label(root, text='0', width=10)
label1.pack()
label1.after(1000, update)

root.mainloop()

방법 2:

import time
import threading
import tkinter as tk

i = 0

def update():
    global i
    while True:
        i += 1
        label1['text'] = str(i)
        time.sleep(1)

root = tk.Tk()
root.title("动态显示")

label1 = tk.Label(root, text='0', width=10)
label1.pack()

update_thread = threading.Thread(target=update)
update_thread.start()

root.mainloop()

 

모두에게 도움이 되길 바랍니다~

추천

출처blog.csdn.net/Xuange_Aha/article/details/128542277