首页 > 解决方案 > 我已经从 pyqt 设计师设计了 ui 现在我想将该按钮和标签连接在一起

问题描述

如何定义 find Qlabel、Qpushbutton 和 QlineEdit 来修复该属性错误?

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys

from PyQt5.uic import loadUiType

Ui, _ = loadUiType('tempconverter.ui')

class MainApp(QMainWindow , Ui):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.cal)

    def cal(self):
        temp = self.temp_in.text
        far=int(temp)*9/5+32
        self.answer.setText(str(far))

def main():
    app = QApplication(sys.argv)
    window = MainApp()
    window.show()
    app.exec_()

if __name__ == "__main__":
    main()

回溯(最后一次调用):文件“d:/pythonproj/temp_test2.py”,第 17 行,在 cal temp = self.temp_in.text 中 AttributeError:'MainApp' 对象没有属性 'temp_in'``

标签: pythonuser-interfacepyqtpyqt5qt-designer

解决方案


您真的应该考虑发布 .ui 文件中定义 temp_in 的部分,但我可以看到一些错误的地方。

首先,你有这一行:

temp = self.temp_in.text

这应该是:

temp = self.temp_in.text()

要让 QLineEdits 检索您需要运行函数 text() 的文本(它不是参数)。

从错误消息来看,您似乎使用了错误的 QLineEdit 名称。您是否可能不小心使用了 QLabel 的名称?可能有帮助的是运行pyuic5将 .ui 文件转换为 Python 代码。这将让您使用代码完成来查看在您的 IDE 中定义了哪些元素。


推荐阅读