如果它有一个空的tex,QPlainTextEdit认为它被修改了

2024-04-25 06:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用PyQt构建一个简单的IDE,如果加载一个空文件,就会出现奇怪的错误。下面是一个小示例脚本:

#!/usr/bin/env python
import sys
from PyQt4 import QtGui
class TestApp(QtGui.QMainWindow):
    def __init__(self, filename=None):
        super(TestApp, self).__init__()
        self._editor = QtGui.QPlainTextEdit()
        self._editor.modificationChanged.connect(self._change_modified)
        self.setCentralWidget(self._editor)
        self._editor.setPlainText('a')
    def _change_modified(self, have_change):
        print(have_change)
if __name__ == '__main__':
    a = QtGui.QApplication([])
    app = TestApp()
    app.show()
    sys.exit(a.exec_())

如预期的那样,显示一个带有此编辑器的纯文本窗口。一旦调用setPlainText方法,编辑器就会发出两个事件:一个是带有changes=TruemodificationChanged事件,第二个是changes=False。 有点奇怪,但还好。 但是,如果将setPlainText('a')更改为setPlainText(''),则只会发出一个事件,这次是changes=True。更糟糕的是,在告诉编辑它不是用setModified(False)修改后,它坚持说它已经被改变了。在

有人知道是什么原因造成的吗?我该怎么解决这个问题?在


更新:它似乎是一个bug,而且还影响QPlainTextEdit.clear()。在

下面的解决方法在QPlainTextEdit周围放置一个包装器来修复clear()和{}。在

^{pr2}$

Tags: importselfinitdefsys事件changeeditor