我使用PyQt构建了一个文本编辑器,我正在尝试向它显示一个字符串
我尝试使用QTextEdit.append()
,QTextEdit.setText()
但我在每种情况下都得到TypeError。
我在做:
qstring_result = QString(string_result)
QTextEdit.setText(qstring_result)
我收到了一个错误:
TypeError: QTextEdit.append(QString): first argument of unbound method must have type 'QTextEdit'
我搜索了很多但没有办法转换String type to QTextEdit type
。解决这个问题的方法是什么?
代码:
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import Qt
class Main(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self,parent)
self.initUI()
def initUI(self):
self.setGeometry(100,100,1030,800)
string_result = "This is correct output"
qstring_result = QString(string_result)
QTextEdit.setText(qstring_result)
self.setWindowTitle("Writer")
def main():
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
答案 0 :(得分:1)
问题是必须使用类的实例调用类的方法(函数):
>>> QTextEdit # class
<class 'PyQt4.QtGui.QTextEdit'>
>>> QTextEdit() # instance
<PyQt4.QtGui.QTextEdit object at 0x7f00ea379a68>
>>> type(QTextEdit)
<class 'PyQt4.QtCore.pyqtWrapperType'>
>>> type(QTextEdit())
<class 'PyQt4.QtGui.QTextEdit'>
错误消息显示该方法为“未绑定”,这意味着它没有附加实例:
>>> QTextEdit.setText # unbound
<built-in function setText>
>>> QTextEdit().setText # bound
<built-in method setText of QTextEdit object at 0x7f00ea379a68>
因此,您必须在setText
的实例上调用QTextEdit
方法。您可以通过调用它来创建QTextEdit
的实例。您必须使用QTextEdit
调用self
的构造函数,以显示QTextEdit
什么是主文件(它所在的窗口)。到目前为止,您的计划应该是:
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import Qt
class Main(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self,parent)
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 500, 500)
string_result = "This is correct output"
text_edit = QtGui.QTextEdit(self)
然后您应该调用setText
方法。您应该text_edit.setText
,而不是QTextEdit.setText
,因为text_edit
是您的实例。因此,您的下一行应该是:
text_edit.setText(string_result)
然后您可以完成您的计划:
text_edit.setGeometry(0, 0, 500, 500) # this just sets the size to 500 x 500
self.setWindowTitle("Writer")
def main():
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
然后您的程序会生成此输出:
此外,由于您的程序采用zetcode教程的一般形式,因此可能值得一试:http://zetcode.com/gui/pyqt4/