在 PyQt4 中动态更改 QLabel 文本

2024-01-09

我的问题是:如何更改标签中的文本?标签位于布局内,但是setText()似乎不起作用——也许我做得不对。

这是我的代码:

这是主窗口 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,它对应于 QLineEdit 之一。

UPDATE

我做了你告诉我要做的所有更改,该项目看起来组织得很好,但现在我得到了这个输出:

类型错误:描述符'init' 需要一个 'sip.simplewrapper' 对象,但收到了 'logica_login'

UPDATE 2

*类型错误:描述符'init' 需要一个 'sip.simplewrapper' 对象,但收到了 'logica_login' ------------------------->SOLVE

现在,我遇到了与开始这一切交易相同的问题,标签不会改变其内容。


您没有正确使用 pyuic 创建的模块。你应该never直接编辑这些模块 - 它们应该导入到您的主应用程序中。

pyuic 生成的 UI 类有一个setupUi方法。此方法采用您在 Qt Designer 中创建的顶级类的实例,并将设计器中的所有小部件添加到该实例。所以label_nombre例如,将成为属性实例的传递给setupUi。通常,你会创建一个顶级类的子类,然后传入self作为实例(见下文)。

我建议您使用 pyuic 重新生成 ui 文件并将其另存为,例如dialog_ui.py and 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_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PyQt4 中动态更改 QLabel 文本 的相关文章

  • 这段代码中list[:]的含义是什么? [复制]

    这个问题在这里已经有答案了 这段代码来自Python的文档 我有点困惑 words cat window defenestrate for w in words if len w gt 6 words insert 0 w print wo
  • 如何计算Numpy数组中特定范围内的值?

    我有一个 NumPy 值数组 我想计算有多少个值在特定范围内 例如 x25 我已阅读有关计数器的信息 但它似乎仅对特定值有效 对值范围无效 我已经搜索过 但没有找到任何关于我的具体问题的信息 如果有人能指出我正确的文档 我将不胜感激 谢谢
  • 将 3D 矩阵转换为级联 2D 矩阵

    我有一个3Dpython中的矩阵如下 import numpy as np a np ones 2 2 3 a 0 0 0 2 a 0 0 1 3 a 0 0 2 4 我想转换这个3D矩阵到一组2D矩阵 我努力了np reshape但这并没
  • numba.prange 性能不佳

    我试图整理一个简单的例子来说明使用的好处numba prange对于我自己和一些同事来说 但我无法获得像样的加速 我编写了一个简单的一维扩散求解器 它本质上是在一个长数组上循环 组合元素i 1 i and i 1 并将结果写入element
  • 使用非负约束进行优化

    考虑以下功能 import numpy as np import scipy optimize as opt import math Periodic indexation def pl list i return list i len l
  • PyPDF2 复制后返回空白 PDF

    def EncryptPDFFiles password directory pdfFiles success 0 Get all PDF files from a directory for folderName subFolders f
  • Pandas 将 NULL 读取为 NaN 浮点数而不是 str [重复]

    这个问题在这里已经有答案了 给定文件 cat test csv a b c NULL d e f g h i j k l m n 其中第三列被视为str 当我对列执行字符串函数时 pandas已阅读NULLstr 作为一个NaN float
  • 使用 pybind11 修改 std::array 的默认值

    我的目标是修改在中声明的数组C struct并赋予默认值 我读过了this https pybind11 readthedocs io en stable advanced cast stl html making opaque types
  • 减少每日状态表以仅包含状态更改

    我有一个包含 10 万以上用户的大型每日状态表 5 7 亿行 目前它位于 MySQL 或 CSV 中 该表包含三列 user id status 和 date 理想情况下 我希望将表缩减为一个新表 其中包含每个状态期间的 user id s
  • Django 视图中的原始 SQL 查询

    我将如何使用原始 SQL 执行以下操作views py from app models import Picture def results request all Picture objects all yes Picture objec
  • 正则表达式 - Python - 删除前导空格

    我使用正则表达式在文本文件中搜索 产品 一词 然后 我使用该搜索的起点和终点来查看该列并提取整数 有些实例 A 列 有我不想要的前导空格 我只想将数字 如 B 列中的数字 打印到文件中 没有前导空格 正则表达式中的正则表达式 有条件的 pr
  • 如何使用 Anaconda Python 执行 .py 文件?

    我刚刚在我的 Windows 计算机上下载并安装了 Anaconda 但是 我在使用命令提示符执行 py 文件时遇到问题 如何让我的计算机了解 python exe 应用程序位于 Anaconda 文件夹中 以便它可以执行我的 py 文件
  • 在地图类型中创建 DataFrame 分组列

    My 数据框具有以下结构 df spark createDataFrame B a 10 B b 20 C c 30 Brand Type Amount df show Brand Type Amount B a 10 B b 20 C c
  • 如何在Python中比较枚举?

    从 Python 3 4 开始 Enum类存在 我正在编写一个程序 其中一些常量具有特定的顺序 我想知道哪种方式最适合比较它们 class Information Enum ValueOnly 0 FirstDerivative 1 Sec
  • Python,socket.error:[Errno 10049]

    在开发一个简单的聊天客户端的基础上 遇到以下错误 socket error Errno 10049 The requested address is not valid in its context 代码是 from socket impo
  • 使用 scipy.io 将 python pandas dataframe 转换为 matlab 结构

    我正在尝试使用 scipy io 将 pandas 数据帧保存到 matlab mat 文件 我有以下内容 array1 np array 1 2 3 array2 np array a b c array3 np array 1 01 2
  • 识别左侧由 delta 链接的簇,右侧由不同 delta 链接的簇

    考虑排序后的数组a a np array 0 2 3 4 5 10 11 11 14 19 20 20 如果我指定了左增量和右增量 delta left delta right 1 1 这就是我期望的集群分配方式 a 0 2 3 4 5 1
  • Python - 函数无法在新线程中运行

    我正试图杀死notepad exe使用此函数在 Windows 上进行处理 import thread wmi os print CMD Kill command called def kill c wmi WMI Commands not
  • 在 django 视图中执行阻塞请求

    在我的 django 应用程序的一个视图中 我需要执行相对较长的网络 IO 操作 问题是其他请求必须等待该请求完成 即使它们与该请求无关 我做了一些研究并偶然发现了 Celery 但据我了解 它用于执行独立于请求的后台任务 所以我不能使用任
  • Pandas - 过滤器和正则表达式搜索 DataFrame 的索引

    我有一个 DataFrame 其中列是 MultiIndex 索引是名称列表 即index Andrew Bob Calvin 我想创建一个函数来返回数据帧中使用名称 Bob 或以字母 A 开头或以小写字母开头的所有行 如何才能做到这一点

随机推荐

  • 为什么 C# 编译器从这段代码创建 PrivateImplementationDetails ?

    我发现下面的代码 public static class MimeHelper public static string GetMimeType string strFileName string retval switch System
  • 以与 python2 和 python3 兼容的方式将字节写入标准输出

    我想要一个返回文件对象的函数 用它我可以将二进制数据写入标准输出 在Python2中sys stdout就是这样一个物体 在python3中是sys stdout buffer 检索此类对象以使其适用于 python2 和 python3
  • 使用 GPUImage 实时过滤视图

    我正在尝试使用 GPUImage 来过滤视图 因为它以一种 iOS 7 样式覆盖更新 为此 我在 NSTimer 上运行以下代码 但是我的 NSLog 显示 self backgroundUIImage imageFromCurrently
  • ListView BaseAdapter 中的 EditText 奇怪行为

    我有一个 ListView 使用填充BaseAdapter 在列表视图项中有一个数字 EditText
  • Angular 2:{{object}} 有效,{{object.child}} 抛出错误

    使用 Angular v1 已有一段时间了 自从 Angular v2 推出 Beta 版以来 我一直在研究它 现在我已经有了这段代码 但无法让它工作 真的不知道为什么 不知何故 当我打印时 profileUser json 一切正常 pr
  • 将 C++ 库与 Objective-C 应用程序链接和使用

    我正在编写一个图形应用程序 使用 Objective C 作为前端 使用 C 进行图形处理和网络通信 我在苹果网站上四处阅读 寻找一种方法来链接 dylib or so将我的 C 代码添加到我的 Xcode 项目中 但似乎没有任何效果 我能
  • 有时 GET 返回 304 而不是 200

    我正在使用 Node js 和 mongodb 我似乎有时会收到 200 有时会收到未修改的 304 router get add to bag id req res next gt req session bag push req par
  • Java JTable 更新行

    我正在创建一个像这样的 JTable String colName new String ID Country Name Page titel Page URL Time Object products new Object 123 USA
  • 为什么 PhoneGap 总是显示默认的启动画面图像?

    我现在正在测试一个示例 iOS 应用程序 尽管我在 Xcode 项目目标屏幕的 摘要 选项卡 中设置了所有新的启动图像 但 PhoneGap 3 0 仍然显示其默认启动屏幕 为什么 即使闪屏是一个插件并且现在默认情况下不包含在 PhoneG
  • 使用 WebFlux 从资源中读取和解析文件的反应方式?

    我想知道从资源中读取 解析和提供文件的正确方法是什么 目前 我做了这样的事情 fun getFile request ServerRequest Mono
  • Android HttpsUrlConnection eofException

    我有一个问题 当我尝试读取任何输入时 我的 HttpsURLConnection 将抛出 EOFException 该代码适用于某些网络调用 但不适用于其他网络调用 如果我尝试从连接中读取任何内容 则会失败并出现上述错误 Example u
  • RXJS中异步流是如何传输的?

    我试图了解流是如何通过 RXjs 中的管道传输的 我知道这不应该成为一个问题 因为这就是异步流的整个想法 但仍然有一些我想理解的事情 看这段代码 var source Rx Observable range 1 3 flatMapLates
  • 如何在 Visual Studio 中启用 CUDA 项目的单独编译

    我是 CUDA 新手 我正在尝试编写一个应用程序 在其中从另一个内核函数调用一个内核函数 但我收到错误 内核启动自device or global函数需要单独的编译模式 在构建应用程序时 这是我的完整代码 任何帮助 将不胜感激 includ
  • 手风琴与 for 循环一次仅打开一项

    我正在尝试向我的手风琴添加一个交互式 id 但是我的代码中出现了一些问题 手风琴会打开每个手风琴项目 我想要的只是在单击它时能够一次打开一个手风琴项目 for study in studies div class accordion div
  • 什么是 Swift.AnyClass?

    我正在调查UITableView类 我发现 open func register cellClass Swift AnyClass forCellReuseIdentifier identifier String Reading here
  • 解析和检查 Haskell 代码的库?

    hackage中是否有任何库可以解析haskell代码并检查它是否是有效代码 我愿意尝试一下进化模型 我想检查生成的代码字符串是否可以编译 而无需将它们写入磁盘并运行编译器 理想情况下 如果也能够在字符串中运行代码就好了 但只检查代码的有效
  • 一起使用 ORDER BY 和 GROUP BY

    我的表如下所示 我使用的是 MySQL m id v id timestamp 6 1 1333635317 34 1 1333635323 34 1 1333635336 6 1 1333635343 6 1 1333635349 我的目
  • 如何在flutter中开启设备GPS?

    通过使用 Dart 的 simple permissions 和 location 包 它只需要请求用户许可允许或拒绝应用程序使用设备位置来在 Google 地图上显示用户的当前位置 当我在设备上手动打开 GPS 时 我能够获取当前位置 但
  • 如何修复 phpMyAdmin 中的 WordPress MySQL 表?

    背景故事 我在 Mac 上使用 MAMP 设置本地开发服务器和数据库来创建 WordPress 网站 一切都很顺利 昨天 MySQL服务器没有启动 所以我采纳了StackOverflow上答案的建议 从mysql56文件夹中删除了ib lo
  • 在 PyQt4 中动态更改 QLabel 文本

    我的问题是 如何更改标签中的文本 标签位于布局内 但是setText 似乎不起作用 也许我做得不对 这是我的代码 这是主窗口 GUI Qt Designer 给出的 class Ui dashboard QtGui QMainWindow