4

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

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

如何在 Tkinter 中做到这一点?

4

2 回答 2

4

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

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。

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

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

在这里,您可以找到有关 Tkinter 的大量信息和更多示例。


编辑:

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

于 2013-02-25T00:44:51.337 回答
0

您是否尝试使用多处理模块?似乎是你要找的那个。

于 2013-02-24T23:13:04.100 回答