基本上我正在尝试将线程与Tk GUI结合使用,到目前为止,我一直遇到GUI冻结问题,因为cpu密集型任务似乎会使GUI过载。我很擅长线程,并且在尝试同时工作时遇到很多问题。
所以在后台运行一个cpu密集型数学方程,在前台,弹出一个GUI,其中有一个按钮,允许用户将数据输入到数组中以供日后使用,我希望这两个进程都可以同时去。有什么建议吗?
from tkinter import *
import threading
import math
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.addWidgets()
def addWidgets(self):
self.wordEntry = Entry(self, width = 16)
self.wordEntry.grid(row = 2, column = 1)
self.wordEntry.insert(END, "Enter")
self.addBtn = Button(self, text = "Add", width = 16, command = self.add)
self.addBtn.grid(row = 2, column = 2)
def add(self):
global wordList
wordList.append(self.wordEntry.get())
print(wordList)
def startThreads():
t1 = threading.Thread(target=mathFUNC1, args = (100000,))
t1.start()
def mathFUNC1():
#This is what the math function would be essentially
def mathFUN2():
#This would be called by mathFUNC1
def main():
startThreads()
app = App()
app.wm_title("GUI")
if __name__ == "__main__":
main()
所以希望有一种方法可以运行数学函数,但也允许App类不冻结并被前台用户使用。