多线程的问题
我写了一个 tk 窗口,打算点击按钮的时候派生子线程执行任务.求求各位大神给下代码或者实现的思路吧
(除了最佳答案还会给鱼币)
@isdkz @歌者文明清理员 @学习编程中的Ben @tommyyu
(暂时给不了 tkinter 窗口的代码,因为在用手机) 本帖最后由 isdkz 于 2023-2-23 08:27 编辑
像这样子?
from tkinter import *
from threading import Thread
from time import sleep
def task(s):
while True:
print(f'执行{s}')
sleep(2)
root = Tk()
b1 = Button(text="派生子线程", command=lambda: Thread(target=task, args=("任务一",)).start())
b1.pack()
mainloop() 我因为审核已经私信作者
https://fishc.com.cn/thread-224588-1-2.html isdkz 发表于 2023-2-22 21:37
像这样子?
不对
这样重复点击按钮会报错
应该
def func():
Thread(target=task, args=[]).start()# 这样每次都声称一个不同的Thread
def task():
pass
button['command'] = func 歌者文明清理员 发表于 2023-2-23 07:23
不对
这样重复点击按钮会报错
应该
好吧,是我疏忽了 isdkz 发表于 2023-2-22 21:37
像这样子?
感谢大佬
就是任务执行过后会报一个
RuntimeError: Calling Tcl from different apartment liuhongrun2022 发表于 2023-2-24 18:20
感谢大佬
就是任务执行过后会报一个
你的代码方便放出来吗?我看看什么问题 isdkz 发表于 2023-2-24 18:22
你的代码方便放出来吗?我看看什么问题
库:
import os
from tkinter.messagebox as msgbox
from tkinter import *
from threading import Thread
from pdf2docx import Converter
函数的代码:
def pdf_to_word():
try:
pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
wordfile = os.path.splitext(pdffile) + '.docx'
cv = Converter(pdffile)
cv.convert(wordfile)
cv.close()
msgbox.show_info('转换成功!')
except FileNotFoundError:
msgbox.showerror('你没有选择任何文件!')
Button:
b2 = Button(root, text='pdf单文件转word', command=lambda: Thread(target=pdf_to_word).start())
b2.pack(side=LEFT, padx=5, pady=5, fill=BOTH)
这个任务执行完会报这个错误
因为直接用主进程执行完会未响应,然后等一会又好了
所以用子进程
页:
[1]