0
是否有人知道如何调用一个线程的def表单。从线程调用def
时钟程序:
import sys
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog
from time import sleep
import threading
class MyThread (threading.Thread):
def mclock(): # function that it can't call
x = 1
z = 0
while x != -1:
Label(mGui,text = str(x) + "second(s)").pack()
x = x+1
sleep(1)
if x == 60:
x = 1
z = z+1
Label(mGui, text= str(z) + " minute(s) has past.").pack()
return
return
MyThread().start()
mGui = Tk()
mGui.geometry("300x200+100+100")
mGui.title("Jono's Clock")
menubar = Menu(mGui)
filemenu = Menu(menubar, tearoff = 0)
filemenu.add_command(label = "Clock",command = mclock) # can't use function
menubar.add_cascade(label = "File",menu = filemenu)
mGui.config(menu = menubar)
mGui.mainloop()
如果有任何人看到任何其他错误,请注明。我也使用Windows 7和Python 3.3。
这有助于我理解,但我不确定仍然是这样,我已经把完整的代码,而不是示例。 – Minigeek22
我想你想让你的线程类的词像我的代码,然后让你的菜单选项创建'线程'对象并启动它。没有内置的方法可以在另一个线程中运行一个函数,除非以该函数为目标启动一个新线程,或者使用一堆代码在线程之间实现一个消息传递系统,该系统可以包含要运行的作业。 – Blckknght