Изменение QLabel одним нажатием кнопки при каждом нажатии перезаписывается - PullRequest
2 голосов
/ 25 апреля 2019

Я хочу распечатать среднее из набора из 3 чисел, введенных пользователем.Однако всякий раз, когда я нажимаю кнопку, текст накладывается друг на друга

def Comp
    Average = QtGui.QLabel("The Students Average is " + str(self.average), self)
    Average.move(400,300)
    Average.setFont(QtGui.QFont('sanSerif',16))
    Average.resize(Average.sizeHint())
    Average.show()

btn = QtGui.QPushButton("Test",self)
btn.clicked.connect(self.comp)

, любая помощь будет высоко ценится

1 Ответ

0 голосов
/ 25 апреля 2019

Вы создаете новую QLabel каждый раз, когда нажимаете кнопку, вместо этого вы должны повторно использовать QLabel.

from PyQt4 import QtCore, QtGui


class Widget(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)
        self.average_label = QtGui.QLabel()
        self.average_label.setFont(QtGui.QFont("sanSerif", 16))
        self.button = QtGui.QPushButton("Test")
        self.button.clicked.connect(self.on_clicked)

        lay = QtGui.QVBoxLayout(self)
        lay.addWidget(self.average_label)
        lay.addWidget(self.button)

    @QtCore.pyqtSlot()
    def on_clicked(self):
        import random
        self.average = random.uniform(0, 100) # emulate average
        self.average_label.setText(
            "The Students Average is {}".format(self.average)
        )


if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())
...