Change QLabel text dynamically in PyQt4

2024/9/29 5:35:01

My question is: how can I change the text in a label? The label is inside a layout, but setText() does not seem to work - maybe I am not doing it right.

Here is my code:

this is the Main windows GUI, the one Qt-Designer gives:

class Ui_dashboard(QtGui.QMainWindow):
def setupUi(self, dashboard):dashboard.setObjectName(_fromUtf8("dashboard"))dashboard.resize(734, 703)icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap(_fromUtf8("../../../../Documents and Settings/cgarcia/Escritorio/metromara - imagenes - nerio/logoM.JPG")), QtGui.QIcon.Normal, QtGui.QIcon.Off)dashboard.setWindowIcon(icon)dashboard.setWindowOpacity(1.0)self.centralwidget = QtGui.QWidget(dashboard)self.centralwidget.setObjectName(_fromUtf8("centralwidget"))self.frame = QtGui.QFrame(self.centralwidget)self.frame.setGeometry(QtCore.QRect(30, 20, 261, 119))self.frame.setFrameShape(QtGui.QFrame.Box)self.frame.setFrameShadow(QtGui.QFrame.Plain)self.frame.setObjectName(_fromUtf8("frame"))self.gridLayout = QtGui.QGridLayout(self.frame)self.gridLayout.setObjectName(_fromUtf8("gridLayout"))self.label_5 = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_5.setFont(font)self.label_5.setObjectName(_fromUtf8("label_5"))self.gridLayout.addWidget(self.label_5, 4, 0, 1, 1)self.label_4 = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_4.setFont(font)self.label_4.setObjectName(_fromUtf8("label_4"))self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)self.label_ci = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_ci.setFont(font)self.label_ci.setObjectName(_fromUtf8("label_ci"))self.gridLayout.addWidget(self.label_ci, 1, 1, 1, 1)self.label_cargo = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_cargo.setFont(font)self.label_cargo.setObjectName(_fromUtf8("label_cargo"))self.gridLayout.addWidget(self.label_cargo, 2, 1, 1, 1)self.label_gerencia = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_gerencia.setFont(font)self.label_gerencia.setObjectName(_fromUtf8("label_gerencia"))self.gridLayout.addWidget(self.label_gerencia, 3, 1, 1, 1)self.label_nombre = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_nombre.setFont(font)self.label_nombre.setObjectName(_fromUtf8("label_nombre"))self.gridLayout.addWidget(self.label_nombre, 0, 1, 1, 1)self.label_2 = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_2.setFont(font)self.label_2.setObjectName(_fromUtf8("label_2"))self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)self.label = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label.setFont(font)self.label.setObjectName(_fromUtf8("label"))self.gridLayout.addWidget(self.label, 0, 0, 1, 1)self.label_3 = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_3.setFont(font)self.label_3.setObjectName(_fromUtf8("label_3"))self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)self.label_departamento = QtGui.QLabel(self.frame)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_departamento.setFont(font)self.label_departamento.setObjectName(_fromUtf8("label_departamento"))self.gridLayout.addWidget(self.label_departamento, 4, 1, 1, 1)self.treeView = QtGui.QTreeView(self.centralwidget)self.treeView.setGeometry(QtCore.QRect(30, 160, 161, 481))self.treeView.setFrameShape(QtGui.QFrame.Box)self.treeView.setFrameShadow(QtGui.QFrame.Plain)self.treeView.setObjectName(_fromUtf8("treeView"))dashboard.setCentralWidget(self.centralwidget)self.menubar = QtGui.QMenuBar(dashboard)self.menubar.setGeometry(QtCore.QRect(0, 0, 734, 20))self.menubar.setObjectName(_fromUtf8("menubar"))dashboard.setMenuBar(self.menubar)self.statusbar = QtGui.QStatusBar(dashboard)self.statusbar.setObjectName(_fromUtf8("statusbar"))dashboard.setStatusBar(self.statusbar)self.retranslateUi(dashboard)QtCore.QMetaObject.connectSlotsByName(dashboard)def retranslateUi(self, dashboard):dashboard.setWindowTitle(_translate("dashboard", "Metro de Maracaibo.", None))self.label_5.setText(_translate("dashboard", "DEPARTAMENTO", None))self.label_4.setText(_translate("dashboard", "GERENCIA", None))self.label_ci.setText(_translate("dashboard", "...", None))self.label_cargo.setText(_translate("dashboard", "...", None))self.label_gerencia.setText(_translate("dashboard", "...", None))self.label_nombre.setText(_translate("dashboard", "...", None))self.label_2.setText(_translate("dashboard", "C.I.:", None))self.label.setText(_translate("dashboard", "NOMBRE", None))self.label_3.setText(_translate("dashboard", "CARGO", None))self.label_departamento.setText(_translate("dashboard", "...", None))

this is the logic of the interfaces:

class logica_login(Ui_Dialog):
def __init__(self):QtGui.QDialog.__init__(self)#QtGui.QMainWindow.__init__(self)Dialog = Ui_Dialog(self)self.setupUi(Dialog)self.bloguin_aceptar.clicked.connect(self.validacion)self.blogin_cancelar.clicked.connect(self.reject)Dialog.show()Dialog.exec_()#PRINT DE PRUEBAprint('hola')#METODO DE VALIDACION
#####################
def validacion(self):#CONEXION A LA BASE DE DATOS.#############################db = QSqlDatabase.addDatabase("QPSQL")db.setHostName("localhost")db.setDatabaseName("postgres")db.setUserName("postgres")db.setPassword("1234")#self.ui.label_nombre.setText(str(Ui_Dialog.le_user.text()))#RESPUESTA EN CASO DE FALLO EN CONEXION CON LA BASE DE DATOS.#############################################################if not db.open():QtGui.QMessageBox.about(self, "ERROR","LO SENTIMOS, EXPERIMENTAMOS PROBLEMAS DE CONEXION CON EL SERVIDOR.")#CONSULTA A LA BASE DE DATOS DE LA CLAVE Y CONTRASEÑA#####################################################consulta = QSqlQueryModel()consulta.setQuery("SELECT usuario, contraseña, id FROM usuarios")lista = []i = consulta.rowCount()#BUCLE DE EXTRACCION Y REORDENACION DE DATOS EN LA LISTA "LISTA"################################################################while i >= 0:db_user = consulta.record(i).value("usuario");db_pass = consulta.record(i).value("contraseña");db_id = consulta.record(i).value("id")str_user = str(db_user)str_pass = str(db_pass)auth_db = (str_user, str_pass)lista.append(auth_db)i = (i-1)print(lista)user = self.le_user.text()passw = self.le_pass.text()for usrname, password in lista:if ((user == usrname) and (passw == password)):print('logueo exitoso')QtGui.QMessageBox.about(self, "Logue Exitoso.", "ACCESO CONCEDIDO.")self.deleteLater()go = Trueprint(go)dashboard.showMaximized()#self.ui.label_nombre.setText(str(Ui_Dialog.le_user.text())) ### LOGICA_LOGIN NO TIENE ATRIBUTO UIbreak;elif ((user == usrname) and (passw != password)):QtGui.QMessageBox.about(self, "ERROR","Contraseña Incorrecta.")break;elif ((user != usrname) and (passw == password)):QtGui.QMessageBox.about(self, "ERROR","Nombre de usuario Incorrecto")break;else:QtGui.QMessageBox.about(self, "ERROR","Nombre de usuario y Contraseña Incorrecto")class logica_tablero(Ui_dashboard):def __init__(self):l_n = Ui_dashboard.label_nombre()QtGui.QMainWindow.__init__(self)self.ui = Ui_dashboard(self)self.ui.setupUi(self)#logica_tablero.ui.l_n.setText("hola")Ui_dashboard.label_5.setText(("hola"))def main():app = QtGui.QApplication(sys.argv)if 1 == 1 :loginApp = logica_login()loginApp.show()else:mainApp = Ui_dashboard()mainApp.setupUi(dash)dash.showMaximized()#Ui_dashboard.label_nombre.setText(("hola"))sys.exit(app.exec_())if __name__ == "__main__":app = QtGui.QApplication(sys.argv)## ESTA PARTE HA SIDO UN DOLOR DE CABEZA, NO OLVIDAR NI BORRAR.#BUCLE DE DASHBOARD#---------------------------------dashboard = QtGui.QMainWindow()mainApp = Ui_dashboard()mainApp.setupUi(dashboard)#BUCLE DE LOGIN#---------------------------------l = logica_login()l   #---------------------------------sys.exit(app.exec_())    

I want to change the labels once the user logs in to the program. The label I want to change is label_nombre, and I want to replace it for le_user, which corresponds to one of the QLineEdits.

UPDATE

I made all the changes you told me to do, the project is looking pretty much organized, but now i am getting this output:

TypeError: descriptor 'init' requires a 'sip.simplewrapper' object but received a 'logica_login'

UPDATE 2

*TypeError: descriptor 'init' requires a 'sip.simplewrapper' object but received a 'logica_login' -------------------------> SOLVE

Now, I have the same problem that began this all deal, the label wont change its content.

Answer

You are not using the modules created by pyuic correctly. You should never directly edit these modules - they should imported into your main application.

The UI classes that pyuic generates have a setupUi method. This method takes an instance of the top-level class that you created in Qt Designer, and it will add all the widgets from designer to that instance. So label_nombre, for example, would become an attribute of the instance passed to setupUi. Usually, you will create a subclass of the top-level class, and then pass in self as the instance (see below).

I would suggest that you re-generate your ui files with pyuic and save them as, say dialog_ui.py and dashboard_ui.py.

The structure of your program would then become something like this:

from PyQt4 import QtCore, QtGui
from dashboard_ui import Ui_dashboard
from dialog_ui import Ui_Dialogclass logica_login(QtGui.QDialog, Ui_Dialog):def __init__(self):QtGui.QDialog.__init__(self)self.setupUi(self)self.bloguin_aceptar.clicked.connect(self.validacion)self.blogin_cancelar.clicked.connect(self.reject)def validacion(self):...class logica_tablero(QtGui.QMainWindow, Ui_dashboard):def __init__(self):QtGui.QMainWindow.__init__(self)self.setupUi(self)self.label_nombre.setText("hola")...if __name__ == "__main__":app = QtGui.QApplication(sys.argv)login = logica_login()if login.exec_() == QtGui.QDialog.Accepted:dashboard = logica_tablero()dashboard.showMaximized()sys.exit(app.exec_())
https://en.xdnf.cn/q/71249.html

Related Q&A

Setting figure size to be larger than screen size in matplotlib

Im trying to create figures in matplotlib that read nicely in a journal article. I have some larger figures (with subfigures) that Id like to take up nearly an entire page in portrait mode (specificall…

Tensorflow 0.7.1 with Cuda Toolkit 7.5 and cuDNN 7.0

I recently tried to upgrade my Tensorflow installation from 0.6 to 0.7.1 (Ubuntu 15.10, Python 2.7) because it is described to be compatible with more up-to-date Cuda libraries. Everything works well i…

How to export tensor board data?

In the tensorborads README.md, it ask me to do like this:How can I export data from TensorBoard?If youd like to export data to visualize elsewhere (e.g. iPython Notebook), thats possible too. You can…

Releasing Python GIL while in C++ code

Ive got a library written in C++ which I wrap using SWIG and use in python. Generally there is one class with few methods. The problem is that calling these methods may be time consuming - they may han…

How to include the default TEMPLATE_CONTEXT_PROCESSORS in the new TEMPLATES setting in Django 1.10

Im upgrading a project to Django 1.10 and it has code like the following:from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCPTEMPLATE_CONTEXT_PROCESSORS = TCP + (django.template.c…

Selecting best range of values from histogram curve

Scenario :I am trying to track two different colored objects. At the beginning, user is prompted to hold the first colored object (say, may be a RED) at a particular position in front of camera (marked…

dash_bootstrap_components installed succesfully but no recognised

I have my dash working perfectly. I have installed dash_bootstrap_components to give style to my dash. I wrote pip install dash-bootstrap-components and was perfectly installed. But when I run the app,…

Efficient updates of image plots in Bokeh for interactive visualization

Im trying to create a smooth interactive visualization of different slices of a muldimensional array using Bokeh. The data in the slices changes according to the user interaction and thus has to be upd…

AttributeError: module cv2.cv2 has no attribute TrackerMOSSE_create

As the Dans suggestion, i tried to edit this post Error occurred at setting up MOOSE tracker, I also dont know why this error happened because i installed the Opencv-contrib-python==4.5.1.48.However,af…

Python, Error audio Recording in 16000Hz using Pyaudio

I use Python 2.7.3, Mac OS 10.8.2 and Xcode 4.5.1I am trying to record sound using PyAudio following the instructions in http://people.csail.mit.edu/hubert/pyaudio/and using the program ""&qu…