【发布时间】:2016-10-24 17:30:18
【问题描述】:
我使用 pyqt 构建了一个小 gui,您可以在其中从 QComboBox 中选择 Key,然后使用 Value 进行通常需要 3 秒的数学计算,结果是一个短字符串。我正在文本框中的 gui 中更新计算出的短字符串。这是我的代码(我删除了数学计算代码,因为它不相关),到目前为止它正在工作:
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) 中实现它(未注释)。但它没有效果。我怎样才能做到这一点?
【问题讨论】:
标签: python python-3.x pyqt pyqt4