在python中更新Qlabel

时间:2019-01-13 13:34:19

标签: python-3.x pyqt5

我已经研究了一段时间,这对python编码来说还是很新的。对于Google的每次点击,我都找到了一种解决挑战的新方法,而且我无法将其正确地实现为我的代码。

我的错误显示:

  

TypeError:“ str”对象不可调用

从阅读中我知道,不可能调用字符串,而只能调用函数。但是我看不到“有效”示例与我所做的区别。

那么任何人都可以解释一下并给我一些提示吗? 我只是想用新的风力数据更新Qlabel。

下面的我的代码(删除了一些代码以保持简洁):

import sys
#from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QLabel
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import mysql.connector
import threading
import time


class GetData(object):
    def __init__(self, interval=1):
        self.interval = interval

        thread = threading.Thread(target=self.mysql_fetch, args=())
        thread.daemon = True
        thread.start()

        self.wind = ""

    def mysql_fetch(self):
        while True:
            cnx = mysql.connector.connect(user='wfs', database='wfs', password='wfs22')
            cursor = cnx.cursor()

            get_wind = "SELECT * FROM wind WHERE id=(SELECT MAX(id) FROM wind)"
            cursor.execute(get_wind)
            self.wind = cursor.fetchone()
            global wind
            wind = self.wind[1]
            global wind_timestamp
            wind_timestamp = self.wind[2]

            print("Thread Running")
            print(wind)

            time.sleep(self.interval)


data = GetData()


class App(QMainWindow):

    def __init__(self):
        super().__init__()
        self.title = "WFS - Weather Forecast Station"
        self.setWindowIcon(QIcon("drawing.svg.png"))
        self.left = 475
        self.top = 650
        self.width = 450
        self.height = 350
        self.initUI()     

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        wind_label = QLabel("wind: " + str(wind) + "m/s", self)
        wind_label.move(50, 50)
        wind_label.adjustSize()

        self.show()

    def update_label(self):
        wind = str(data.wind[1])
        print("test " + wind)
        self.wind_label(data.wind[1]) #<<< My line of problem. :) 
        QApplication.processEvents()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()

    timer = QTimer()
    timer.timeout.connect(ex.update_label)
    timer.start(1000)

    sys.exit(app.exec_())

0 个答案:

没有答案