1

ループで大量のデータを処理し、ステータスをメインウィンドウの textedit ウィジェットに更新しています。問題は、ループ内のすべてのデータが処理された後、テキスト編集ウィジェットのみが更新されることです。その処理としてtexteditウィジェットに表示したい。

for i in data:
  ...
  textedit.settext(i) <<---- this part is not updated "fast" enough to textedit widget
  ..

これについて何ができますか?何らかの形式のマルチスレッドの方向を見る必要がありますか? ありがとう

更新: 実際には、シナリオ全体では、いくつかのファイル操作を行い、ディレクトリを調べ、データベースに接続し、ものを選択してから GUI に表示しています。私のコードはバックグラウンドで実行されますが、QT textedit ウィジェットに見つかった結果を「リアルタイム」で表示したいと思います。現在、ファイル操作が完了した後、ウィジェットに結果が表示されます。また、ファイル操作の実行中に GUI が「ハング」します。ありがとう

4

1 に答える 1

1

コードの残りの部分を見ずに書くのは難しいですが、 Qt でスロットとシグナルを調査することをお勧めします。

class myObject(QObject):
  somethingChanged= pyqtSignal(str)

  def __init__(self):
    super(myObject).__init__(self)
    # Here we indicate we will try and catch the signal.  
    self.somethingChanged.connect(self.updateText)

  def processData(self):
    for i in data:
      ...
      # Inside the loop you can fire off a signal.
      object.emit("somethingChanged")
      ...

  def updateText(self,text):
      textedit.setText(text) 
于 2013-09-17T06:58:27.177 に答える