我使用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=True
的modificationChanged
事件,第二个是changes=False
。
有点奇怪,但还好。
但是,如果将setPlainText('a')
更改为setPlainText('')
,则只会发出一个事件,这次是changes=True
。更糟糕的是,在告诉编辑它不是用setModified(False)
修改后,它坚持说它已经被改变了。在
有人知道是什么原因造成的吗?我该怎么解决这个问题?在
更新:它似乎是一个bug,而且还影响QPlainTextEdit.clear()
。在
下面的解决方法在QPlainTextEdit
周围放置一个包装器来修复clear()
和{
这是一个Qt错误,简单的解决方法是在指示修改时检查空内容。在
相关问题 更多 >
编程相关推荐