How do I stop a Python process instantly from a Tkinter window?

前端 未结 1 1586
我在风中等你
我在风中等你 2021-01-19 02:43

I have a Python GUI that I use to test various aspects of my work. Currently I have a \"stop\" button which kills the process at the end of each test (there can be multiple

1条回答
  •  后悔当初
    2021-01-19 03:17

    If it's a thread, you can use the lower-level thread (or _thread in Python 3) module to kill the thread with an exception by calling thread.exit().

    From the documentation:

    • thread.exit(): Raise the SystemExit exception. When not caught, this will cause the thread to exit silently.

    A cleaner method (depending on how your processing is set up) would be to signal the thread to stop processing and exit using an instance variable, then calling the join() method from your main thread to wait until the thread exits.

    Example:

    class MyThread(threading.Thread):
    
        def __init__(self):
            super(MyThread, self).__init__()
            self._stop_req = False
    
        def run(self):
            while not self._stop_req:
                pass
                # processing
    
            # clean up before exiting
    
        def stop(self):
            # triggers the threading event
            self._stop_req = True;
    
    def main():
        # set up the processing thread
        processing_thread = MyThread()
        processing_thread.start()
    
        # do other things
    
        # stop the thread and wait for it to exit
        processing_thread.stop()
        processing_thread.join()
    
    if __name__ == "__main__":
        main()
    

    0 讨论(0)
提交回复
热议问题