、私はあなたが説明何をしたいか否かのわずかな懐疑を共有しています。また、文脈を記述するために少しだけコードを表示する方が良いと分かります。
これを言って、以下のコードは、あなたが説明しているように見えるところで刺すものです。これは決して生産準備のためのコードではなく、その原則を説明するための粗悪な例であることに注意してください。
Button1
のプレスで1つの機能を呼び出すと、QCoreApplication.processEvents()
を呼び出すことによってイベントループがwhile
ループ内で回転したままになります。マウスイベント。さて、これはではなく、のようなものです。しかしながら、これが必要とされる特定の状況が存在する。あなたが非モーダルでQProgressDialog
を持っていて、ダイアログカウンタが増加している間にGUIを更新したままにしたい場合(http://doc.qt.io/qt-4.8/qprogressdialog.html#value-propを参照)
2番目の部分では、 while
ループが終了します。
が、これは
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
btn2pushed = False
def window():
app = QApplication(sys.argv)
win = QDialog()
b1 = QPushButton(win)
b1.setText("Button1")
b1.move(50,20)
b1.clicked.connect(b1_clicked)
b2 = QPushButton(win)
b2.setText("Button2")
b2.move(50,50)
QObject.connect(b2,SIGNAL("clicked()"),b2_clicked)
win.setGeometry(100,100,200,100)
win.setWindowTitle("PyQt")
win.show()
sys.exit(app.exec_())
def b1_clicked():
print "Button 1 clicked"
i = 0
while (btn2pushed != True):
# not doing anything
if (i % 100000 == 0):
print "Waiting for user to push button 2"
QCoreApplication.processEvents()
i += 1;
print "Button 2 has been pushed"
def b2_clicked():
global btn2pushed
btn2pushed = True
if __name__ == '__main__':
window()
それがクリックされたイベントを持っているので、スロットを実装し、それらを接続する必要があり、あなたのボタンのイベントを使用する場合に役立ちます私に教えてください。 - > https://wiki.qt.io/How_to_Use_QPushButton/de – retinotop
も参照してください。何もしないためにwhileループを使用するのはなぜですか?マルチスレッドのアプリケーションを起動し、whileループでイベントを待つことができますか? – retinotop
私はclicked()イベントを受け取るまで次の繰り返しに行きたくありません。 – floflo29