首页 > 解决方案 > tkinter 中的多处理未在 output_box 中获得文本输出

问题描述

我想要做的是,当我按下抓取按钮时,它会使用 mutliprocessing 抓取多个网站,并将输出放在 tkinter 提供的文本框中。以下是我的代码的高级解释。


import multiprocessing
from tkinter import ttk
from tkinter import *
import tkinter as tk


def do():
    global arr
    pool = multiprocessing.Pool(processes=2)
    pool.map(f,arr)
    pool.terminate()
    pool.join()


root = tk.Tk()
output_box=tk.Text(root)
output_box.pack()
def f(x):
    global output_box
    output_box.insert("end-1c",str(x))
    print(x)
if __name__ == '__main__':  
    arr=list(range(10))
    scrape_button=Button(root,text='Scrape!',command=do)
    scrape_button.pack()
    root.mainloop()

代码在执行时会给出带有按钮和文本窗口的 tkinter 窗口。但是当我点击抓取时,x 打印在标准输出中,但不在 output_box 中。我应该怎么做才能在我的文本框中获得预期的输出(我们在函数 f 的 output_box 中插入的内容)?

标签: tkinterpython-multiprocessing

解决方案


推荐阅读