【发布时间】:2014-02-06 05:25:53
【问题描述】:
我是一个新手,正在尝试使用 PyQt4 在 Python 中编写一个 Z 机器解释器——一个专门用于像 Zork 这样的文本冒险的虚拟机。我决定将 QTextEdit 子类化为程序的主界面,但我无法将它变成一个可以满足我要求的小部件。我必须能够向其附加文本,在与最后一个附加字符相同的行上接受用户输入,然后附加更多文本,并且绝不允许用户编辑以前由程序附加或输入的任何文本用户。换句话说,对于用户在其末尾键入的新文本,我必须定期将小部件中的所有文本设置为只读 except。这是我最近尝试过的代码:
class ZScreen(QTextEdit):
def __init__(self, parent=None):
super(QTextEdit, self).__init__(parent)
self.setUndoRedoEnabled(False)
self.setAcceptRichText(False)
self.readOnlyBefore = self.textCursor().position
def changeEvent(self, e):
if self.textCursor().position < self.readOnlyBefore:
self.setReadOnly(True)
else:
self.setReadOnly(False)
super(QTextEdit, self).changeEvent(e)
def printTo(self, text):
self.append(text)
self.moveCursor(QTextCursor.End)
self.readOnlyBefore = self.textCursor().position
【问题讨论】:
-
我正在考虑在 QTextBrowser 上显示 QLineEdit,然后在返回时将其替换为附加到 QTextBrowser 的文本。
-
我终于意识到我可以在 Github 上的所有公共 Python 代码中搜索关键字,并找到了 a QTextEdit subclass by Karel Klíč,这几乎完全符合我的要求。
标签: python python-2.7 pyqt pyqt4 qtextedit