我已经在Peter Goldsborough的基础上组装了一个基于this example的文本编辑器,但是为Python的Qt的PyQt绑定进行了修改。
在Goldsborough的代码中,有许多符合此模式的文本格式化方法:
def bold(self):
if self.text.fontWeight() == QtGui.QFont.Bold:
self.text.setFontWeight(QtGui.QFont.Normal)
else:
self.text.setFontWeight(QtGui.QFont.Bold)
if / else是假设来检查当前选择的格式是什么;如果它还没有该方法实现的格式,则将其设置为该格式,否则,如果已经是该格式,则将其重新设置为正常。字处理器的典型可切换格式化行为。
不幸的是,这种实现似乎没有那么做。 fontWeight()
方法检索"当前" QTextBrowser的格式,这意味着它将呈现新键入文本的格式 - 换句话说,继续从光标之前之前的任何格式。
这意味着会出现奇怪的行为,这对于文字处理器来说是不对的:如果文本都是正常的,那么它会改变格式,但是如果你改变文本内部片段的格式,那么试试之后将其更改回来,文本将错误地保持格式化状态。
理想情况下应该发生的是if / else应该对选择内部内部文本的格式进行操作,而不是在它之前。但我找不到这样做的方法。想到我在这里错过了一些实质性的东西 - 感谢您提出的任何建议!