PySide6でQUiLoaderがハングする問題とその回避方法【6.8.1で解決?】

Python 3,Python,PySide6,Qt,Bug

PySide を使ってカスタムウィジェットを作成する際、.ui ファイルを利用することはよくあるかと思います。しかしその中で、PySide6 の QUiLoader が正しく動作しない不具合が報告されています。

from PySide6 import QtWidgets
from PySide6.QtUiTools import QUiLoader
import sys

app = QtWidgets.QApplication(sys.argv)

print("Before loader")
loader = QtUiTools.QUiLoader()
print("After loader")

QtWidgets.QApplicationが読み込まれた後、正しく動作しないという問題で、上のコードを実行するとAfter loaderがプリントされず、loader = QtUiTools.QUiLoader()でハングしてしまいます。これを解決するのはいたって簡単でQtWidgets.QApplicationの前にQUiLoaderを定義することで解決します。

from PySide6 import QtWidgets
from PySide6.QtUiTools import QUiLoader
import sys

loader = QtUiTools.QUiLoader()
app = QtWidgets.QApplication(sys.argv)

報告にあったバージョンは6.6、 6.7のようですがローカルで確認すると6.8.0では同様に動かず、6.8.1からは動くようになっているので解決しているようですがリリースノートには記載がなかったので何かしらの要因で動かなかったのかもしれません。

参照元