📜  如何在 Tkinter Python中使用线程

📅  最后修改于: 2022-05-13 01:55:15.929000             🧑  作者: Mango

如何在 Tkinter Python中使用线程

先决条件:

  • Python GUI – tkinter
  • 多线程

Python为开发 GUI(图形用户界面)提供了多种选择。在所有 GUI 方法中,tkinter 是最常用的方法。它是Python附带的 Tk GUI 工具包的标准Python接口。使用 tkinter 的Python是创建 GUI 应用程序的最快和最简单的方法。使用 tkinter 创建 GUI 是一项简单的任务。

在创建 GUI 时,需要在后端进行多项工作/操作。假设我们要同时执行 4 个操作。这里的问题是,每个操作都一个一个地执行。在执行一项操作期间,GUI 窗口也不会移动,这就是我们需要线程化的原因。下面给出了两种实现,这显然有助于更好地理解它们的差异。

无螺纹

在没有线程的情况下工作,会使进程延迟。此外,在完全执行之前,窗口不会移动。

方法

  • 创建普通的 Tkinter 窗口
  • 使用命令添加按钮
  • 执行 Tkinter

程序:

Python3
# 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()


Python3
# 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()


输出:

带螺纹

方法

  • 创建普通的 Tkinter 窗口
  • 添加带有线程命令的按钮
  • 执行 Tkinter

程序:

蟒蛇3

# 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()

输出: