我的问题是:如何更改标签中的文本?标签在布局内,但setText()
似乎不起作用-也许我做对了。
这是我的代码:
这是Main Windows GUI,一个Qt-Designer提供:
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))
这是接口的逻辑:
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 PRUEBA
print('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 = True
print(go)
dashboard.showMaximized()
#self.ui.label_nombre.setText(str(Ui_Dialog.le_user.text())) ### LOGICA_LOGIN NO TIENE ATRIBUTO UI
break;
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_())
我想在用户登录到程序后更改标签。我要更改的标签是label_nombre
,我想将其替换为le_user
,它对应于QLineEdits之一。
更新
我进行了您告诉我要做的所有更改,该项目看起来看起来井井有条,但是现在我得到了以下输出:
TypeError:描述符“ init ”需要一个“ sip.simplewrapper”对象,但收到一个“ logica_login”
更新2
现在,我遇到了开始所有交易的相同问题,标签不会更改其内容。
您没有正确使用pyuic创建的模块。您 永远不要 直接编辑这些模块-它们应该导入到您的主应用程序中。
pyuic生成的UI类具有一个setupUi
方法。此方法采用您在Qt
Designer中创建的顶级类的实例,并将所有来自Designer的窗口小部件添加到该实例。因此label_nombre
,例如,它将成为传递给的实例的
属性setupUi
。通常,您将创建顶级类的子类,然后将其self
作为实例传递(见下文)。
我建议您使用pyuic重新生成ui文件,并将其另存为,例如dialog_ui.py
和dashboard_ui.py
。
程序的结构将变成这样:
from PyQt4 import QtCore, QtGui
from dashboard_ui import Ui_dashboard
from dialog_ui import Ui_Dialog
class 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_())
在我的项目中,我想实现一个语法突出显示功能。我的意思是,当用户在代码区键入代码时,文本将像IDE(Eclipse、Intellij、Netbeans)一样立即高亮显示。 例如,如果我们在IntellijJavaIDE中键入“import”,那么它会将单词“import”涂成蓝色。在我的项目中,我想实现同样的事情。 我的目标是用蓝色突出特定的关键词。例如,如果关键字是“mov”、“load”、“xo
问题内容: 我正在尝试从方法外部更改菜单项的标题。 我已经做了以下工作; 但是,我希望能够在此方法之外修改特定菜单项的标题。 问题答案: 正如JxDarkAngel所建议的那样,可以从你的中的任何地方调用它, 然后覆盖:
问题内容: 我有这样的查询结果: 列数未知,因为它是数据透视查询的结果。 我想将列的名称更改为如下所示: 颜色是我从另一个表中检索到的信息。 我怎样才能做到这一点? 谢谢 编辑:这是查询。 问题答案: 模式设置 : 查询 :
问题内容: 我有一个包含3列的表,表头中具有以下值:“编号”,“ X [mm]”,“ Y [mm]”。该表包含以毫米为单位的点的坐标。我有一个复选框,用于检查应重新填充哪些表格以以英寸为单位显示坐标。此外,列标题值应为:“ No。”,“ X [in]”,“ Y [in]”。 简而言之,我想动态更改表格的标题文本。 详细信息:该表是JTable的子类。此外,已将“ DefaultTableModel
问题内容: 我正在从数据库中成功获取数据值。我也将它们存储到一个数组中。我需要将String数组作为项的加载,以响应执行的关键操作。每当获取按键值时,如何获取按键值,就如何重新加载项目。相反,我需要动态刷新项目。 问题答案:
问题内容: 目前,我正在Spring Boot中基于REST的项目上工作。我在“ application.properties”文件中添加了api网址。 即 application.properties 以及来自Java的“ api-base-url”值访问。 在某些情况下,我需要动态更改“ api-base-url”。我已经动态更改了’api-base-url’的值并且可以正常工作。 但是我