【问题标题】:How to use Threading using python tkinter program? [closed]如何使用 python tkinter 程序使用线程? [关闭]
【发布时间】:2020-04-09 20:49:52
【问题描述】:
from tkinter import *
from tkinter import ttk
from tkinter import filedialog


# initialize gui interface
root=Tk()
root.geometry("510x200")

global folder_selected, path

def getFolderPath():

      # do somthing

btnFind = ttk.Button(root, text="Browse Folder",command=getFolderPath)


def down():     

        #do somthing


dwn=ttk.Button(root,text="Download",width='25',command=down)
dwn.place(x=190,y=120)

root.mainloop()  

在这个程序中,我想使用线程。我不知道线程如何在这个程序中使用 Python 实现线程。

【问题讨论】:

    标签: python multithreading tkinter


    【解决方案1】:

    您应该使用threading 模块。我给你写了一点代码。 background 函数可以在单独的线程上启动您的函数。

    如果你的函数有输入参数,你可以像这样传递它们:command=lambda : background(print_numbers, (50,)))。重要提示:args 必须是一个元组,即使它只有一个

    代码:

    import tkinter as tk
    from tkinter import ttk
    import threading
    import time
    
    root = tk.Tk()
    root.geometry("510x200")
    
    
    def getFolderPath():
        print("getFolderPath. Thread: {}".format(threading.get_ident()))
        time.sleep(10)
    
    
    def down():
        print("Down. Thread: {}".format(threading.get_ident()))
    
    
    def background(func, args):
        th = threading.Thread(target=func, args=args)
        th.start()
    
    
    btnFind = ttk.Button(root, text="Browse Folder", command=lambda: background(getFolderPath, ()))
    btnFind.place(x=0, y=0)
    
    dwn = ttk.Button(root, text="Download", width="25", command=lambda: background(down, ()))
    dwn.place(x=190, y=120)
    
    
    root.mainloop()
    

    获取窗口:

    控制台输出:(如果您点击按钮)

    >>> python3test_file.py 
    Down. Thread: 140212479096576
    Down. Thread: 140212479096576
    getFolderPath. Thread: 140212479096576
    getFolderPath. Thread: 140212468516608
    getFolderPath. Thread: 140212460123904
    Down. Thread: 140212451731200
    getFolderPath. Thread: 140212451731200
    Down. Thread: 140212443338496
    

    你可以看到线程的ID是不同的。这意味着任务在不同的线程上运行。

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 2016-01-31
      • 2016-08-03
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      相关资源
      最近更新 更多