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

multiprocessing モジュールを使用しようとしましたか?あなたが探しているもののようです。

于 2013-02-24T23:13:04.100 に答える