gpt4 book ai didi

python - Python tkinter 中的多处理

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:54 26 4
gpt4 key购买 nike

如何在没有多线程的情况下在python中运行多个进程?例如考虑以下问题:-

我们必须制作一个 Gui,它有一个开始按钮来启动一个函数(比如,打印所有整数),还有一个停止按钮,这样点击它就会停止函数。

如何在 Tkinter 中执行此操作?

最佳答案

然后您需要将 Button 小部件与启动工作线程的函数绑定(bind)。例如:

import time
import threading
import Tkinter as tk

class App():
def __init__(self, root):
self.button = tk.Button(root)
self.button.pack()
self._resetbutton()
def _resetbutton(self):
self.running = False
self.button.config(text="Start", command=self.startthread)
def startthread(self):
self.running = True
newthread = threading.Thread(target=self.printints)
newthread.start()
self.button.config(text="Stop", command=self._resetbutton)
def printints(self):
x = 0
while self.running:
print(x)
x += 1
time.sleep(1) # Simulate harder task

使用self.running 方法,您可以仅通过更改其值来优雅地结束线程。请注意,使用多线程可避免在执行 printints 时阻塞 GUI。

我已阅读 this previous question我想你为什么在这里明确要求没有多线程的解决方案。在 Tkinter 中,此解决方案可用于其他线程必须与 GUI 部分通信的场景。例如:在渲染一些图像时填充进度条。

但是,正如评论中指出的那样,这种方法对于仅打印数字来说太复杂了。

Here您可以找到有关 Tkinter 的大量信息和更多示例。


编辑:

由于您的新问题已关闭,我将更改此处的代码以澄清最后一点。

关于python - Python tkinter 中的多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com