我正在编写一些GUI,然后我想将文本添加到listView。现在我只想添加“你好”来搞清楚,然后我会从那里发展它。
以下是我的代码示例:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(584, 461)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.lineEdit_6 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_6.setGeometry(QtCore.QRect(72, 210, 171, 20))
....
self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), MainWindow.addEntry)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
....
def addEntry(self):
listView.Items.Add("Hello")
然后打开它:
from PyQt4 import *
import signal
import sys
from PyQt4.QtGui import QApplication, QMessageBox
from inv_window import *
def main():
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
尝试运行时,我得到:
AttributeError: 'QMainWindow' object has no attribute 'addEntry'
关于如何纠正这个问题的任何想法?我试过谷歌搜索,但我很难找到解决方案
答案 0 :(得分:2)
问题似乎出现在这一行:
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), MainWindow.addEntry)
您的MainWindow
变量是QMainWindow
个实例,因此它没有属于您的addEntry
类的Ui_MainWindow
方法。因此你看到的错误。
如果可以的话,我想指出代码的风格问题。在Python中,局部变量和方法/函数参数的名称通常以小写字母开头。您有一个名为MainWindow
的变量(和方法参数)。当我第一次阅读你的代码时,我感到困惑,因为MainWindow
看起来像一个类的名字。我建议将此变量/方法参数的名称更改为mainWindow
或main_window
或mainwin
或类似名称。
答案 1 :(得分:1)
当您为from PyQt4 import *
方法撰写main()
时,您还需要导入QtCore
并将QtGui
视为全球。要使其具体,您需要撰写你的主要方法如:
from PyQt4 import QtCore, QtGui
import signal
from PyQt4 import *
from Ui_MainWindow import Ui_MainWindow
from inv_window import *
import sys
def main():
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
答案 2 :(得分:0)
您正在从错误的模块导入。不是100%确定哪一个,但我建议下载Pycharm,因为它有助于自动完成并找出哪些模块可用于哪里,而无需每次在您的站点包装配置中手动查找。我建议下载PyQt5。这是一个很好的教程,可以帮助您入门:http://zetcode.com/gui/pyqt5/还可以查看:https://pythonspot.com/en/pyqt5/