Tkinterで書かれた視覚化ツールがあります。通常、スタンドアロンで実行し、終了したら手動でウィンドウを閉じます。ただし、別のPythonプログラムから呼び出して、メインループを1回実行し(そしてキャンバスをSVGとして保存し)、ウィンドウを閉じてプログラムを続行できるようにします。
わざわざウィンドウを開くことすらできず、コードを再利用してSVGを描画するだけであれば、それでも機能します。
私のtkアプリケーションは次のようになります。
class MainApplication(tk.Frame):
def __init__(self, output_path, parent=None):
tk.Frame.__init__(self, parent)
self.parent = parent
# draw visualization, save as svg
#...
#
私のコードの別の部分から、私は
kill = True
root = tk.Tk()
root.title("Placement Visualizer")
MainApplication(output_path, root ).pack(side="top", fill="both", expand=True)
if kill:
root.destroy()
root.mainloop()
このエラーが発生します:Tcl_AsyncDelete: async handler deleted by the wrong thread Aborted (core dumped)
root.quit()を使用するか、root.mainloop()を削除しようとしましたが、目的の結果が得られません。ありがとうございました
「私のコードの他の部分」:
if kill:
root.quit()
else:
root.mainloop()
ウィンドウをまったく開かないで、すべてを描画してSVGを保存するには、root.quit()を呼び出すだけです。ウィンドウを正常に開く(そしてウィンドウを閉じてプロセスを強制終了する)には、root.mainloop()を呼び出します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加