Не обновляется Qlabel, во время работы в программе
Пишу программу для считывания RFID меток, добавления их в БД и дальнейший их учет. Проблема заключается в том что про добавлении метки в программу Qlabel не обновляется и не выводить данные оборудования. Подскажите как постоянно автоматически обновлять QLabel, что бы она всегда показывала актуальную информацию?
Вот весь код:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QThread
import sqlite3
import pandas as pd
import json
import sys, time
import numpy as np
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt
database = './data/testDB.db'
textbase = './data/tags.txt'
DeviceBase = './data/DeviceList.db'
ExcelList = './data/alm_hardware.xlsx'
# database = './data/testDB.db'
# textbase = './data/tags.txt'
# DeviceBase = './data/DeviceList.db'
# ExcelList = './data/alm_hardware.xlsx'
#подключение к базе данных
try:
sqlite_connection = sqlite3.connect(DeviceBase)
cursor = sqlite_connection.cursor()
print("Подключен к SQLite")
except sqlite3.Error as error:
print("Ошибка при работе с SQLite", error)
def insert_varible_into_table(Inventory, Serial, Model, Owner, Location, self): #добавление данных в SQLite
sqlite_insert_with_param = """INSERT INTO DeviceList
(Inv, Serial, Model, Owner, Location)
VALUES (?, ?, ?, ?, ?);"""
data_tuple = (Inventory, Serial, Model, Owner, Location)
cursor.execute(sqlite_insert_with_param, data_tuple)
sqlite_connection.commit()
print("Переменные Python успешно вставлены в таблицу DeviceList")
def LoadDeviseList():
cursor.execute("SELECT * FROM DeviceList")
data = cursor.fetchall()
return data
cursor.execute("SELECT * FROM RFID")
RFID_list = cursor.fetchall()
DeviceList = LoadDeviseList()
def insert_varible_into_table_RFID(Inventory, RFID): #добавление данных в SQLit
if Inventory in str(RFID_list):
cursor.execute("""DELETE FROM RFID WHERE inv = ?""", Inventory)
sqlite_connection.commit()
sqlite_insert_with_param = """INSERT INTO RFID
(Inv, RFID)
VALUES (?, ?);"""
data_tuple = (Inventory, RFID)
cursor.execute(sqlite_insert_with_param, data_tuple)
sqlite_connection.commit()
print("Переменные Python успешно вставлены в таблицу RFID")
def UpdateDevices():
cursor.execute("DELETE FROM DeviceList")
excel_data_df = pd.read_excel(ExcelList, sheet_name='Page 1')
excel_list = json.loads(excel_data_df.to_json(orient='records'))
for item in excel_list:
if str('DECOMISSIONED') != str(item['Fixed Asset Number']):
insert_varible_into_table(item['Fixed Asset Number'], item['Serial number'], item['Display name'], item['Assigned to'], item['Location'])
print('Ready')
def LoadDeviseList():
cursor.execute("SELECT * FROM DeviceList")
data = cursor.fetchall()
return data
class AddNewDevice(QThread):
def __init__(self, mainwindow, parant=None):
super().__init__()
self.mainwindow = mainwindow
inv = self.mainwindow.lineEdit.text()
rfidnum = (self.mainwindow.RFID_Label.text()).partition(';')[0]
insert_varible_into_table_RFID(inv, rfidnum)
test_rfid = ''
class ProgressBarThread(QThread):
def __init__(self, mainwindow, parant=None):
super().__init__()
self.mainwindow = mainwindow
def run(self):
global test_rfid
current_rfid = ''
while True:
self.mainwindow.pushButton_2.setEnabled(True)
with open(textbase) as file:
RFID_original = file.readlines()[-1]
RFID = RFID_original.partition(';')[0]
if current_rfid != RFID:
font = QFont("Arial", 8)
self.mainwindow.RFID_Label.setFont(font)
self.mainwindow.RFID_Label.setText(RFID_original)
if RFID in str(RFID_list):
*res1, = filter(lambda x: x[1] == RFID, RFID_list)
res1 = np.array(res1)
self.mainwindow.Device_Label.setText(f"<html><head/><body><p align=\"center\"><span style=\" font-size:20pt; font-weight:600;\">{str(res1[0][0])}</span></p></body></html>")
current_rfid = RFID
for item in DeviceList:
if str(res1[0][0]) == str(item[0]):
#self.mainwindow.BeginResetModel()
font = QFont("Arial", 18)
self.mainwindow.label_5.setFont(font)
self.mainwindow.label_5.setText(str(item[0]))
self.mainwindow.label_5.setAlignment(Qt.AlignCenter)
self.mainwindow.label_3.setFont(font)
self.mainwindow.label_3.setText(str(item[1]))
self.mainwindow.label_3.setAlignment(Qt.AlignCenter)
self.mainwindow.label_7.setFont(font)
self.mainwindow.label_7.setText(str(item[2]))
self.mainwindow.label_7.setAlignment(Qt.AlignCenter)
self.mainwindow.label_10.setFont(font)
self.mainwindow.label_10.setText(str(item[3]))
self.mainwindow.label_10.setAlignment(Qt.AlignCenter)
self.mainwindow.label_11.setFont(font)
self.mainwindow.label_11.setText(str(item[4]))
self.mainwindow.label_11.setAlignment(Qt.AlignCenter)
#self.mainwindow.endResetModel()
else:
test_rfid = RFID
self.mainwindow.pushButton_2.setEnabled(True)
time.sleep(1)
def refresh(self):
DeviceList = LoadDeviseList()
for item in DeviceList:
if str(item[0]) == self.mainwindow.label_5.text():
font = QFont("Arial", 18)
self.mainwindow.label_5.setFont(font)
self.mainwindow.label_5.setText(str(item[0]))
self.mainwindow.label_5.setAlignment(Qt.AlignCenter)
self.mainwindow.label_3.setFont(font)
self.mainwindow.label_3.setText(str(item[1]))
self.mainwindow.label_3.setAlignment(Qt.AlignCenter)
self.mainwindow.label_7.setFont(font)
self.mainwindow.label_7.setText(str(item[2]))
self.mainwindow.label_7.setAlignment(Qt.AlignCenter)
self.mainwindow.label_10.setFont(font)
self.mainwindow.label_10.setText(str(item[3]))
self.mainwindow.label_10.setAlignment(Qt.AlignCenter)
self.mainwindow.label_11.setFont(font)
self.mainwindow.label_11.setText(str(item[4]))
self.mainwindow.label_11.setAlignment(Qt.AlignCenter)
break
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.setEnabled(True)
Form.resize(1019, 747)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(Form.sizePolicy().hasHeightForWidth())
Form.setSizePolicy(sizePolicy)
Form.setMinimumSize(QtCore.QSize(1019, 747))
Form.setMaximumSize(QtCore.QSize(1019, 747))
font = QtGui.QFont()
font.setPointSize(1)
Form.setFont(font)
Form.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
Form.setStyleSheet("background-color: rgb(134, 134, 134);")
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setEnabled(True)
self.pushButton.setGeometry(QtCore.QRect(350, 530, 281, 61))
font = QtGui.QFont()
font.setFamily("AcadEref")
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet("\n"
"border-radius: 20px;\n"
"background-color: rgba(255, 255, 255, 100);")
self.pushButton.setObjectName("pushButton")
self.Device_Label = QtWidgets.QLabel(Form)
self.Device_Label.setGeometry(QtCore.QRect(60, 540, 201, 31))
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.Device_Label.setFont(font)
self.Device_Label.setAlignment(QtCore.Qt.AlignCenter)
self.Device_Label.setIndent(-1)
self.Device_Label.setObjectName("Device_Label")
self.RFID_Label = QtWidgets.QLabel(Form)
self.RFID_Label.setGeometry(QtCore.QRect(770, 80, 201, 35))
self.RFID_Label.setAlignment(QtCore.Qt.AlignCenter)
self.RFID_Label.setIndent(-1)
self.RFID_Label.setObjectName("RFID_Label")
self.tableWidget = QtWidgets.QTableWidget(Form)
self.tableWidget.setGeometry(QtCore.QRect(20, 610, 611, 111))
self.tableWidget.setStyleSheet("background-color: rgba(255, 255, 255, 128);")
self.tableWidget.setRowCount(1)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(5)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(0, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(0, 1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(0, 2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(0, 3, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(0, 4, item)
self.tableWidget.horizontalHeader().setVisible(True)
self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
self.tableWidget.horizontalHeader().setDefaultSectionSize(120)
self.tableWidget.horizontalHeader().setMinimumSectionSize(20)
self.tableWidget.horizontalHeader().setSortIndicatorShown(True)
self.tableWidget.horizontalHeader().setStretchLastSection(False)
self.tableWidget.verticalHeader().setVisible(False)
self.tableWidget.verticalHeader().setCascadingSectionResizes(False)
self.pushButton_2 = QtWidgets.QPushButton(Form)
self.pushButton_2.setEnabled(False)
self.pushButton_2.setGeometry(QtCore.QRect(780, 130, 180, 70))
font = QtGui.QFont()
font.setFamily("AcadEref")
font.setPointSize(10)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.pushButton_2.setFont(font)
self.pushButton_2.setStyleSheet("border-radius: 20px;\n"
"background-color: rgba(255, 255, 255, 100);")
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_4 = QtWidgets.QPushButton(Form)
self.pushButton_4.setGeometry(QtCore.QRect(780, 250, 180, 70))
font = QtGui.QFont()
font.setFamily("AcadEref")
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_4.setFont(font)
self.pushButton_4.setMouseTracking(False)
self.pushButton_4.setStyleSheet("\n"
"border-radius: 20px;\n"
"background-color: rgba(255, 255, 255, 100);")
self.pushButton_4.setObjectName("pushButton_4")
self.lineEdit = QtWidgets.QLineEdit(Form)
self.lineEdit.setGeometry(QtCore.QRect(730, 20, 281, 51))
font = QtGui.QFont()
font.setFamily("AcadEref")
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.lineEdit.setFont(font)
self.lineEdit.setAlignment(QtCore.Qt.AlignCenter)
self.lineEdit.setObjectName("lineEdit")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(636, 602, 381, 141))
self.label_2.setText("")
self.label_2.setPixmap(QtGui.QPixmap(""))
self.label_2.setScaledContents(True)
self.label_2.setObjectName("label_2")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(50, 110, 270, 61))
self.label.setStyleSheet("\n"
"background-color: rgba(255, 255, 255, 0);")
self.label.setObjectName("label")
self.label_3 = QtWidgets.QLabel(Form)
self.label_3.setGeometry(QtCore.QRect(380, 110, 300, 61))
self.label_3.setStyleSheet("border-radius: 20px;\n"
"background-color: rgba(255, 255, 255, 100);")
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(Form)
self.label_4.setGeometry(QtCore.QRect(10, 20, 350, 61))
self.label_4.setStyleSheet("\n"
"background-color: rgba(255, 255, 255, 0);")
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(Form)
self.label_5.setGeometry(QtCore.QRect(380, 20, 300, 61))
self.label_5.setStyleSheet("border-radius: 20px;\n"
"background-color: rgba(255, 255, 255, 100);")
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(Form)
self.label_6.setGeometry(QtCore.QRect(60, 200, 250, 61))
self.label_6.setStyleSheet("\n"
"background-color: rgba(255, 255, 255, 0);")
self.label_6.setObjectName("label_6")
self.label_7 = QtWidgets.QLabel(Form)
self.label_7.setGeometry(QtCore.QRect(380, 200, 300, 61))
self.label_7.setStyleSheet("border-radius: 20px;\n"
"background-color: rgba(255, 255, 255, 100);")
self.label_7.setObjectName("label_7")
self.label_8 = QtWidgets.QLabel(Form)
self.label_8.setGeometry(QtCore.QRect(60, 290, 250, 61))
self.label_8.setStyleSheet("\n"
"background-color: rgba(255, 255, 255, 0);")
self.label_8.setObjectName("label_8")
self.label_9 = QtWidgets.QLabel(Form)
self.label_9.setGeometry(QtCore.QRect(60, 380, 250, 61))
self.label_9.setStyleSheet("\n"
"background-color: rgba(255, 255, 255, 0);")
self.label_9.setObjectName("label_9")
self.label_10 = QtWidgets.QLabel(Form)
self.label_10.setGeometry(QtCore.QRect(380, 280, 300, 61))
self.label_10.setStyleSheet("border-radius: 20px;\n"
"background-color: rgba(255, 255, 255, 100);")
self.label_10.setObjectName("label_10")
self.label_11 = QtWidgets.QLabel(Form)
self.label_11.setGeometry(QtCore.QRect(380, 370, 300, 61))
self.label_11.setStyleSheet("border-radius: 20px;\n"
"background-color: rgba(255, 255, 255, 100);")
self.label_11.setObjectName("label_11")
self.label_12 = QtWidgets.QLabel(Form)
self.label_12.setGeometry(QtCore.QRect(6, 2, 711, 471))
self.label_12.setStyleSheet("border-radius: 20px;\n"
"background-color: rgba(255, 255, 255, 100);")
self.label_12.setText("")
self.label_12.setObjectName("label_12")
self.label_12.raise_()
self.pushButton.raise_()
self.Device_Label.raise_()
self.RFID_Label.raise_()
self.tableWidget.raise_()
self.pushButton_2.raise_()
self.pushButton_4.raise_()
self.lineEdit.raise_()
self.label_2.raise_()
self.label.raise_()
self.label_3.raise_()
self.label_3.raise_()
self.label_4.raise_()
self.label_5.raise_()
self.label_6.raise_()
self.label_7.raise_()
self.label_8.raise_()
self.label_9.raise_()
self.label_10.raise_()
self.label_11.raise_()
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton.setText(_translate("Form", "Запустить"))
self.Device_Label.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:18pt;\">60010002288</span></p></body></html>"))
self.RFID_Label.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:9pt;\">60010002959</span></p></body></html>"))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("Form", "Инвентарный номер"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("Form", "Серийный номер"))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("Form", "Модель"))
item = self.tableWidget.horizontalHeaderItem(3)
item.setText(_translate("Form", "Владелец"))
item = self.tableWidget.horizontalHeaderItem(4)
item.setText(_translate("Form", "Расположение"))
__sortingEnabled = self.tableWidget.isSortingEnabled()
self.tableWidget.setSortingEnabled(False)
item = self.tableWidget.item(0, 0)
item.setText(_translate("Form", "60010003856"))
item = self.tableWidget.item(0, 1)
item.setText(_translate("Form", "PF3ETWH7"))
item = self.tableWidget.item(0, 2)
item.setText(_translate("Form", "LENOVO ThinkPad T14 Gen 2 (Intel)"))
item = self.tableWidget.item(0, 3)
item.setText(_translate("Form", "Aleksandr Dorfman (Aleksandr.Dorfman@ru.nestle.com) "))
item = self.tableWidget.item(0, 4)
item.setText(_translate("Form", "FACTORY"))
self.tableWidget.setSortingEnabled(__sortingEnabled)
self.pushButton_2.setText(_translate("Form", "Добавить"))
self.pushButton_4.setText(_translate("Form", "Обновить данные"))
self.lineEdit.setText(_translate("Form", "1254672523"))
self.label.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt; font-weight:600;\">Serial number:</span></p></body></html>"))
self.label_3.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt;\">V206BB22</span></p></body></html>"))
self.label_4.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt; font-weight:600;\">Inventory number:</span></p></body></html>"))
self.label_5.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt;\">60010002288</span></p></body></html>"))
self.label_6.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt; font-weight:600;\">Model:</span></p></body></html>"))
self.label_7.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt;\">desktop</span></p></body></html>"))
self.label_8.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt; font-weight:600;\">Owner:</span></p></body></html>"))
self.label_9.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt; font-weight:600;\">Location:</span></p></body></html>"))
self.label_10.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt;\"Иван Иванович</span></p></body></html>"))
self.label_11.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:26pt;\">Склад</span></p></body></html>"))
def UpdateList():
n = 0
for i in DeviceList:
self.tableWidget.setRowCount(len(DeviceList))
p = 0
for j in i:
self.tableWidget.setItem(n, p, QtWidgets.QTableWidgetItem(str(j)))
p += 1
n += 1
UpdateList()
self.tableWidget.setSortingEnabled(__sortingEnabled)
self.pushButton_2.setText(_translate("Form", "Добавить"))
self.pushButton_4.setText(_translate("Form", "Обновить данные"))
self.pushButton.clicked.connect(self.launch_progress_bar_filling)
self.pushButton_4.clicked.connect(lambda: (UpdateDevices(), UpdateList()))
#self.pushButton_2.clicked.connect(lambda: insert_varible_into_table_RFID(self.lineEdit.text(), (self.RFID_Label.text()).partition(';')[0]))
self.pushButton_2.clicked.connect(lambda: insert_varible_into_table_RFID(self.lineEdit.text(), test_rfid))
self.ProgressbarThread_instance = ProgressBarThread(mainwindow=self)
def launch_progress_bar_filling(self):
self.pushButton.setEnabled(False)
self.ProgressbarThread_instance.start()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
cursor.close()
if sqlite_connection:
sqlite_connection.close()
print("Соединение с SQLite закрыто")
Эта программа работает совместно с другой которая как раз таки и сканирует RFID метки.