使用QTimer时不会更新QLabel文本

时间:2018-09-19 10:53:16

标签: python pyqt pyqt5

我正在尝试让QLabel使用QTimer进行更新,但是使用.setText()时文本不会更新。如果我在.show()上使用self.price_label,它将在QLabel顶部重新绘制文本,显然这不是正确的方法。

from PyQt5 import QtWidgets, QtGui, QtCore
import getters

class Window(QtWidgets.QMainWindow):
    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle("Hello There!")
        self.setWindowIcon(QtGui.QIcon('logo.png'))
        self.exitMenu = QtWidgets.QAction(" &Exit", self)
        self.exitMenu.setShortcut("Ctrl+Q")
        self.exitMenu.setStatusTip("Leave the app")
        self.exitMenu.triggered.connect(self.close_application)
        self.statusBar()

        self.mainMenu = self.menuBar()
        self.fileMenu = self.mainMenu.addMenu("&File")
        self.fileMenu.addAction(self.exitMenu)

        self.timer = QtCore.QTimer(self)
        self.timer.timeout.connect(self.home)
        self.timer.start(5000)

    def home(self):
        self.quit_button = QtWidgets.QPushButton("Quit", self)
        self.quit_button.clicked.connect(QtCore.QCoreApplication.instance().quit)

        self.quit_button.resize(100,100)
        self.quit_button.move(100, 70)

        self.symbol = getters.pair.get_price().get("symbol")
        self.price = getters.pair.get_price().get("price")

        print(self.symbol)
        print(self.price)

        self.price_label = QtWidgets.QLabel("%s %s" % (self.symbol, self.price), self)
        self.price_label.resize(200, 100)
        self.price_label.move(200, 100)

        self.price_label.setText("%s %s" % (self.symbol, self.price))

        QtWidgets.QApplication.processEvents()

        self.show()


    def close_application(self):
        sys.exit()


def run():
    app = QtWidgets.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())

run()

我猜我的QTimer可能放置不正确,并且没有正确地为QLabel重新绘制文本?

1 个答案:

答案 0 :(得分:0)

您撰写本文的方式是每五秒钟设置几个UI项目。 +-----+-----------+------------+--------+----------+-----------+-------------+ | id | article | attr1 | attr2 | attr3 | attr4 | attr5 | +-----+-----------+------------+--------+----------+-----------+-------------+ | 001 | 1 | XYZ1 | XYZ2 | XZY1 | XZY2 | 8997451 | +-----+-----------+------------+--------+----------+-----------+-------------+ 方法中的大部分内容都应移至.white-background{ background-color } `<input id="{{data.name}}" [class.white-background]="!data.author" type="`{{data.details.type}}" style=" border-radius:0;" class="form-control error"> 。这样,仅在程序启动时才设置UI。

如果您只想每五秒钟更改标签的文本,请尝试以下操作:

home

您家庭方法中所有不属于我的东西,请移至__init__。另外,请确保在def __init___(self): # previous code here self.symbol = getters.pair.get_price().get("symbol") self.price = getters.pair.get_price().get("price") def home(self): self.symbol = getters.pair.get_price().get("symbol") self.price = getters.pair.get_price().get("price") self.price_label.setText('%s %s' % (self.symbol, self.price)) 中包含__init__self.symbol的第一个实例。