Python2.7+PyQt4.10:如何从导入文件获取LineEdit文本?
解决PyQt4获取UI部件文本的报错问题
嘿,你这个报错的原因很明确——你调用UI类的方式完全错啦!PyQt4的Ui_mainWindow是个类,setupUi是它的实例方法,不能直接用类去调用,而且这个方法还需要接收一个主窗口实例作为参数才行。
给你捋一遍正确的操作流程,直接上可运行的代码:
首先,你的第二个文件得这么写:
import sys from PyQt4.QtGui import QApplication, QMainWindow import Warehouse if __name__ == "__main__": # 初始化PyQt应用 app = QApplication(sys.argv) # 创建主窗口对象 main_win = QMainWindow() # 实例化UI类 ui = Warehouse.Ui_mainWindow() # 把主窗口传给setupUi,让UI组件挂载到窗口上 ui.setupUi(main_win) # 现在终于能正确获取lineEdit的文本了! user_input = ui.lineEdit.text() print("输入的文本是:", user_input) # 如果需要显示窗口的话,加上下面两行 main_win.show() sys.exit(app.exec_())
为什么之前的代码会报错?
- 你直接用
Ui_mainWindow.setupUi()调用类方法,而setupUi是实例方法,它首先需要self(也就是UI类的实例)作为第一个参数,你没传实例,肯定会参数错误。 - 其次,
setupUi必须接收一个QMainWindow(或者你用的其他窗口类)的实例,这样PyQt才知道把你在UI里创建的lineEdit等部件放到哪个窗口上,不然部件根本没被正确初始化,自然访问不了。
另外要确认一下:Warehouse.py里的lineEdit是Ui_mainWindow的实例属性(也就是用self.lineEdit = ...定义的),如果是pyuic4自动生成的代码,这点肯定是满足的,不用额外修改。
内容的提问来源于stack exchange,提问作者Ahmed Wagdi
相关产品推荐
相关产品推荐

