我正在尝试为蓝牙创建一个简单的用户界面。UI有一个带有3个按钮的根窗口。你知道吗
在Scan和Discover click期间,我想创建一个Toplevel
窗口,其中有label
和progressbar
,它们对应的函数在Toplevel
窗口后面运行。你知道吗
这是我的密码:
import threading
import ttk
import time
from Tkinter import *
from bluetooth import *
def bluethscn():
...
do_something...
...
return
def msgwindow(msg):
window1 = Toplevel()
frame1 = Frame(window1)
frame1.pack()
label = Label(frame1, text=msg)
label.pack()
frame2 = Frame(window1)
frame2.pack()
pb_hd = ttk.Progressbar(frame2, orient='horizontal', mode='indeterminate')
pb_hd.pack()
pb_hd.start(6)
def discover():
print "searchine for nearby devices..."
nearby_devs = discover_devices(8,True,True)
print "nearby_devs = ", nearby_devs
def start_discover():
t1 = threading.Thread(target=msgwindow("searching..."), args=())
t2 = threading.Thread(target=discover, args=())
t1.start()
t2.start()
root=Tk()
label = Label(root, text="Root Window").pack()
butn_quit = Button(root, text="Quit", command= root.quit)
butn_quit.pack()
butn_dcov = Button(root, text="Discover", command=start_discover)
butn_dcov.pack()
butn_scan = Button(root, text="Scan", command=bluethscn)
butn_scan.pack()
root.mainloop()
我遵循this示例创建线程。这里的问题是,只有在Discover
或Scan
函数完成后,我才能获得顶层窗口。你知道吗
我需要一些关于如何启动线程的小帮助。我还想销毁顶层窗口,一旦各自的功能完成,即,。在Discover
或Scan
函数完成后要销毁的顶级窗口
更新:
我稍微修改了代码。以前我只创建了一个线程。现在我做了两个线程来同时做这些工作,现在它工作了。你知道吗
但问题是,在discover
函数完成之后,顶层窗口继续运行。当discover功能完成时,如何退出顶层窗口,即,。当t2
线程完成时停止/销毁t1
线程。
如果我加上t1.join()
,同样的情况也会发生。这两个进程并行进行,但当t2
完成时,t1
继续运行
当t2
完成时,如何关闭/终止t1
?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐