单击按钮后更改标签的文本

时间:2019-09-01 20:36:42

标签: python pyqt pyqt5 qt-designer

我不明白为什么单击按钮后标签的文本没有更新。如果要在控制台上显示输出,则没有问题。

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_())

1 个答案:

答案 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_())