Pythonでtkinterをthreadingに乗せることが出来ない
解決したいこと
Pythonでtkinterをthreading上で動かした時、ランタイムエラーが送られてしまいます。
あくまで以下の該当するプログラムのように書きたいのですが、エラーは回避可能でしょうか?
それともtkinterがマルチスレッド非対応っぽいから回避不可能でしょうか?
別のライブラリを使う、適切なオプションを付けるなど、回避の方法があればそれを、不可能なら不可能ですと回答お願いします。
なお、tkinter.Frameのafterメソッドは使わずにお願いします。
出力
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python39\lib\threading.py", line 950, in _bootstrap_inner
Hello
self.run()
File "C:\Python39\lib\threading.py", line 888, in run
self._target(*self._args, **self._kwargs)
File "C:\Python39\lib\tkinter\__init__.py", line 1422, in mainloop
self.tk.mainloop(n)
RuntimeError: Calling Tcl from different apartment
ソースコード
import tkinter
import threading
def greet():
print("Hello")
root = tkinter.Tk()
t1 = threading.Thread(target=root.mainloop)
t2 = threading.Thread(target=greet)
t1.start()
t2.start()
環境
OSはWindows10です。
> py --version
Python 3.9.0
0