2017-11-16 15 views
0

私はPythonでグラフィックスプログラムを作成していますが、オンデマンドでのみCanvasを更新する方法を知りたいと思います。つまり、キャンバスがイベントループのすべての実行を更新するのを止め、代わりに私がそれを伝えるときにのみ更新します。tkinter Canvasをオンデマンドでのみ更新するにはどうすればいいですか?

私のプログラムでは、イベントループをブロックするのを防ぐために、標準入力からグラフィックスデータを読み込む別のスレッドがあるため(これは、Pythonで標準入力をポーリングするポーラリングではないとにかく)、私は別のスレッドが入力を読み始めたときではなく、一定の時間間隔でのみ画面を更新したい。

答えて

3

GUI全体を一時停止することなくキャンバスの更新を一時停止することはできません。

簡単な解決策は、更新の準備が整うまでキャンバスに描画しないことです。 canvasコマンドを呼び出す代わりに、それらのコマンドをキューにプッシュします。表示をリフレッシュする準備ができたら、コマンドを繰り返して実行します。

また、2つのキャンバスがある独自のダブルバッファリングを行うこともできます。あなたが積極的に描いているものは目に見えるものの背後にあるでしょう。結果を表示する準備ができたら、キャンバスの積み重ね順を入れ替えます。

関連する問題