You are currently viewing Как использовать поток в Tkinter Python

Как использовать поток в Tkinter Python

Предпосылка: 

Python предлагает несколько вариантов разработки графического интерфейса пользователя (GUI). Из всех методов графического интерфейса tkinter является наиболее часто используемым методом. Это стандартный интерфейс Python для инструментария Tk GUI, поставляемого вместе с Python. Python с tkinter-это самый быстрый и простой способ создания приложений с графическим интерфейсом. Создание графического интерфейса с помощью tkinter-простая задача.

При создании графического интерфейса потребуется выполнить несколько работ/операций на бэкэнде. Предположим, мы хотим выполнить 4 операции одновременно. Проблема здесь в том, что каждая операция выполняется одна за другой. Во время выполнения одной операции окно графического интерфейса также не будет перемещаться, и именно поэтому нам нужна многопоточность. Обе реализации приведены ниже, что, очевидно, поможет лучше понять их различия.

Without Threading

Работа без потоков приводит к задержке процесса. Кроме того, окно не будет перемещаться до тех пор, пока не будет выполнено полное выполнение.

Подход

  • Создайте Обычное Окно Настройки
  • Добавить кнопку с командой
  • Выполнить Tkinter

Программа:

# Import Module
from tkinter import *
import time
from threading import *

# Create Object
root = Tk()

# Set geometry
root.geometry("400x400")


def work():

	print("sleep time start")

	for i in range(10):
		print(i)
		time.sleep(1)

	print("sleep time stop")


# Create Button
Button(root, text="Click Me", command=work).pack()

# Execute Tkinter
root.mainloop()

Выход:

With Threading

Подход

  • Создайте Обычное Окно Настройки
  • Кнопка Добавить с командой для нарезания резьбы
  • Выполнить Tkinter

Программа:

# Import Module
from tkinter import *
import time
from threading import *

# Create Object
root = Tk()

# Set geometry
root.geometry("400x400")

# use threading

def threading():
	# Call work function
	t1=Thread(target=work)
	t1.start()

# work function
def work():

	print("sleep time start")

	for i in range(10):
		print(i)
		time.sleep(1)

	print("sleep time stop")

# Create Button
Button(root,text="Click Me",command = threading).pack()

# Execute Tkinter
root.mainloop()

Выход: