- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我单独运行下面的函数时,它会在 3 秒后退出,但是当我在线程中调用它时,它永远不会退出。请提出这段代码中的错误。
def display(val1, val2):
root = Tk()
clock = Label(root, font=('times', 20, 'bold'), bg='white')
clock.pack(fill=BOTH, expand=0)
def tick():
time1 = val1 +'\n' + val2
clock.config(text=time1)
tick()
root.after(3000,root.quit)
root.mainloop()
我在我的程序中调用上面的函数作为
thread.start_new_thread(display,(val1,val2))
线程适当启动,主程序继续,但显示功能在3秒后没有退出,请建议如何在不影响主程序的情况下加入此线程或销毁它
最佳答案
编辑:
在我的测试中,我认为您的实际问题出在 tkinter 上。你想要 Tk.destroy()
而不是 Tk.quit()
from tkinter import * # < Python3.x you will need Tkinter not tkinter.
from threading import Thread
def display(val1, val2):
root = Tk()
clock = Label(root, font=('times', 20, 'bold'), bg='white')
clock.pack(fill=BOTH, expand=0)
def tick():
time1 = val1 +'\n' + val2
clock.config(text=time1)
tick()
root.after(3000, root.destroy)
root.mainloop()
thread = Thread(target=display, args=("1", "2"))
thread.start()
这对我有用。
从之前:
你应该看看更高级别的threading
模块。这是一个更好的选择。
加入主题:
from threading import Thread
...
thread = Thread(target=display, args=(val1, val2))
thread.start()
...
thread.join()
另一种方法是 multiprocessing
模块。
from multiprocessing import Process
...
process = Process(target=display, args=(val1, val2))
process.start()
...
process.join()
与threading
或thread
不同,multiprocessing
提供Process.terminate()
.
关于python - 在 start_new_thread 之后加入线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9239319/
当我单独运行下面的函数时,它会在 3 秒后退出,但是当我在线程中调用它时,它永远不会退出。请提出这段代码中的错误。 def display(val1, val2): root = Tk()
fdict= {0: fun1(), 1: fun2()} # approach 1 : working fine, printing string print fdict[random.randi
使用线程库时,有没有办法加入由 start_new_threads 创建的所有线程? 例如: try: import thread except ImportError: imp
我在 https://code.google.com/p/pyloadtools/wiki/CodeTutorialMultiThreading 找到了这个简单的代码 import _thread d
尝试在 Python 中使用 thread 时,使用以下代码 import select, sys, time, thread TIMEOUT = 30 def listenthread(server
当我使用旧的 Python thread API 时一切正常: thread.start_new_thread(main_func, args, kwargs) 但如果我尝试使用新的 threadin
python中的thread.start_new_thread和threading.Thread.start有什么区别? 我注意到,当调用 start_new_thread 时,新线程会在调用线程终止
我正在学习有关简单线程的教程。他们给出了这个例子,当我尝试使用它时,我从解释器那里得到了无法理解的错误。你能告诉我为什么这不起作用吗?我在 WinXP SP3 w/Python 2.6 current
我是一名优秀的程序员,十分优秀!