我不明白为什么单击按钮后标签的文本没有更新。如果要在控制台上显示输出,则没有问题。
import sys
from qtpy import QtWidgets
from UI.mainwindow import Ui_MainWindow
app = QtWidgets.QApplication(sys.argv)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.calc_btn.clicked.connect(self.on_calc_btn_click)
def on_calc_btn_click(self):
weight = int(self.ui.weight_textbox.text())
height = int(self.ui.height_textbox.text())
bmi = weight/height**2
print(str(bmi)) # -> works
self.ui.bmi_label.setText(str(bmi)) # -> label does not update
window = MainWindow()
window.show()
sys.exit(app.exec_())
答案 0 :(得分:0)
#Try This
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import *
from PyQt4.QtCore import *
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_CalcBMI(object):
def setupUi(self, CalcBMI):
CalcBMI.setObjectName(_fromUtf8("CalcBMI"))
CalcBMI.resize(400, 300)
self.pushButton = QtGui.QPushButton(CalcBMI)
self.pushButton.setGeometry(QtCore.QRect(140, 220, 111, 28))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.pushButton.clicked.connect(self.On_Update_Clicked)
#add textbox here to get height and weight
self.label = QtGui.QLabel(CalcBMI)
self.label.setGeometry(QtCore.QRect(150, 70, 131, 101))
self.label.setObjectName(_fromUtf8("label"))
self.retranslateUi(CalcBMI)
def On_Update_Clicked(self):
#Get values from textbox and calculate bmi here
bmi="23.5"
self.label.setText(bmi)
def retranslateUi(self, CalcBMI):
CalcBMI.setWindowTitle(_translate("CalcBMI", "CalcBMI", None))
self.pushButton.setText(_translate("CalcBMI", "Calculate now", None))
self.label.setText(_translate("CalcBMI", "inProgess", None))
if __name__ == "__main__":
import sys
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_X11InitThreads)
app = QtGui.QApplication(sys.argv)
CalcBMI = QtGui.QWidget()
ui = Ui_CalcBMI()
ui.setupUi(CalcBMI)
CalcBMI.show()
sys.exit(app.exec_())