我已经研究了一段时间,这对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_())