我使用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)
的開頭(它未被註釋)實現它。但它沒有效果。我該如何做這項工作?