実現したいこと
PySide6でアプリケーションを作っているのですが、Layout に addWidget する量が多くてUIが固まってしまうのをプログレスバーを表示することで解決したいです。
発生している問題・分からないこと
QThreadを用いてQProgressDialogに表示する場合、後ろで動いている重たい処理をスレッド処理にする例はたくさん見つかったのですが、UIの更新(addWidget)自体が重たくなる例が見つからなかったので質問させていただきます。
該当のソースコード
Python
1import sys 2import time 3 4from PySide6.QtWidgets import * 5 6 7class MainWindow(QMainWindow): 8 def __init__(self, parent=None): 9 super(MainWindow, self).__init__(parent) 10 11 self.bStart = QPushButton("Start") 12 self.ylay = QVBoxLayout() 13 main_lay = QVBoxLayout() 14 main_lay.addWidget(self.bStart) 15 main_lay.addLayout(self.ylay) 16 17 self.setCentralWidget(QWidget()) 18 centralWidget = self.centralWidget() 19 centralWidget.setLayout(main_lay) 20 21 self.bStart.pressed.connect(self.run) 22 23 def run(self): 24 for i in range(500): 25 self.ylay.addWidget(QLabel(str(i))) 26 time.sleep(.005) 27 28 29if __name__ == '__main__': 30 app = QApplication(sys.argv) 31 win = MainWindow() 32 win.show() 33 sys.exit(app.exec())
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
参考例の TaskThread の run() 内に MainWindow の ylay を渡しながら addWidget を呼んでみたりしたのですが、上手くいきませんでした。
補足
特になし

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。