pyqtを使用して小さなguiを構築しました。ここではQComboBoxからKey
を選択でき、Value
は通常3秒かかる計算結果です短い文字列。私はテキストボックス内のguiの計算された短い文字列を更新しています。これは私のコードである(それは関連はないので、私は数学の計算コードを削除)、それは、これまで取り組んでいる:計算中にpyqtのテキストボックスを更新しようとしています
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import os
dict1 = {"Key":Value, "Key2":Value2, "Key3":Value3} # Value are int's
class combodemo(QWidget):
def __init__(self, parent = None):
super(combodemo, self).__init__(parent)
layout = QHBoxLayout()
self.cb = QComboBox()
self.cb.addItems([key for key in sorted(dict1.keys())])
self.cb.currentIndexChanged.connect(self.selectionchange)
layout.addWidget(self.cb)
self.setLayout(layout)
self.cb.textbox = QLineEdit(self)
self.cb.textbox.move(100, 200)
self.cb.textbox.resize(150,50)
self.cb.textbox.setAlignment(Qt.AlignCenter)
self.cb.textbox.setText("Initial Text")
def selectionchange(self):
#self.cb.textbox.setText("Calculating...") # THIS IS NOT WORKING
self.cb.currentIndexChanged.connect(self.selectionchange)
# MATH CALCULATION CODE GOES HERE[...]
self.cb.textbox.setText("RESULT OF MATH CALCULATION")
def main():
app = QApplication(sys.argv)
ex = combodemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
今Key
が選択された後、プログラムは私が原因で数学の計算の(3秒間フリーズやっている)。私の数学計算は3秒かかるので、QComboBoxからKey
が選択されたら、テキストボックスを"Calculating..."
に更新したいと思います。だから私の数学計算が実行されている間、私はテキストボックスに"Calculating..."
を表示します。計算が完了したら、単純にテキストボックスを書き換え、数学的結果を表示する必要があります。
上記のコードでは、私は最初に関数def selectionchange(self)
でそれを達成しようとしました(コメントはありません)。しかし、それは効果がありません。どうすればこの作品を作れますか?