如何在gui类外开辟新线程的函数中控制这个gui
时间: 2024-03-14 11:43:44 浏览: 104
RV1126实现GUI多线程【QT GUI可视化】.zip
在GUI类外开辟新线程的函数中控制GUI,你需要使用GUI类的实例对象,在新线程中调用GUI类的方法来更新GUI界面。
以下是一个例子,演示如何在GUI类外开辟新线程的函数中控制GUI:
``` python
import tkinter as tk
import threading
import time
class GUI:
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(self.root, text="Hello World")
self.label.pack()
def update_label(self, text):
self.label.config(text=text)
def thread_task(gui):
# 在另一个线程中,每隔1秒钟更新一次label的文本
while True:
gui.update_label("Thread Updated!")
time.sleep(1)
gui = GUI()
thread = threading.Thread(target=thread_task, args=(gui,))
thread.start() # 启动另一个线程
gui.root.mainloop() # 运行主线程的GUI循环
```
这个例子中,我们创建了一个GUI类,其中包含一个label控件和一个`update_label()`方法,用于更新label的文本。我们还定义了一个`thread_task()`函数,该函数在另一个线程中每隔1秒钟更新一次label的文本,这里我们使用`gui.update_label()`来调用GUI类的`update_label()`方法来更新GUI界面。最后,我们创建了一个GUI类的实例对象,并启动了一个新线程来执行`thread_task()`函数。在主线程中,我们运行了GUI的循环来显示GUI界面。
这样,我们就可以在GUI类外开辟新线程的函数中控制GUI了。
阅读全文