2024-06-08 05:46:54 发布
网友
我对QTextEdit()实现附魔拼写检查有问题。 我试着:
from enchant.checker import SpellChecker chkr = SpellChecker("en_US") chkr.set_text(self.text.toPlainText())
我不能在QTextEdit中使用这个?我怎么用这个self.text?
如果我没弄错你的问题,你只需要做这样的事情:
from PyQt4 import QtGui from enchant.checker import SpellChecker import re import sys class Main(QtGui.QMainWindow): def __init__(self, parent = None): QtGui.QMainWindow.__init__(self,parent) self.initUI() def initToolbar(self): self.spellcheckAction = QtGui.QAction(QtGui.QIcon("icons/logo.png"),"Spellcheck",self) self.spellcheckAction.setStatusTip("Spell Check document") self.spellcheckAction.setShortcut("Ctrl+S") self.spellcheckAction.triggered.connect(self.spellcheckHandler) self.toolbar = self.addToolBar("Options") self.toolbar.addAction(self.spellcheckAction) def initUI(self): self.text = QtGui.QTextEdit(self) self.initToolbar() self.text.setTabStopWidth(33) self.setCentralWidget(self.text) self.setGeometry(100,100,1030,800) self.setWindowTitle("Writer") self.setWindowIcon(QtGui.QIcon("icons/icon.png")) def spellcheckHandler(self): chkr = SpellChecker("en_US") s = str(self.text.toPlainText()) chkr.set_text(s) for err in chkr: self.replaceAll(err.word) def find(self, query): text = self.text.toPlainText() query = r'\b' + query + r'\b' flags = 0 pattern = re.compile(query,flags) start = self.lastMatch.start() + 1 if self.lastMatch else 0 self.lastMatch = pattern.search(text,start) if self.lastMatch: start = self.lastMatch.start() end = self.lastMatch.end() self.moveCursor(start,end) else: self.text.moveCursor(QtGui.QTextCursor.End) def replace(self): cursor = self.text.textCursor() if self.lastMatch and cursor.hasSelection(): self.text.setTextBackgroundColor(QtGui.QColor(0,255,0)) self.text.setTextCursor(cursor) def replaceAll(self, query): self.lastMatch = None self.find(query) while self.lastMatch: self.replace() self.find(query) def moveCursor(self,start,end): cursor = self.text.textCursor() cursor.setPosition(start) cursor.movePosition(QtGui.QTextCursor.Right,QtGui.QTextCursor.KeepAnchor,end - start) self.text.setTextCursor(cursor) def main(): app = QtGui.QApplication(sys.argv) main = Main() main.show() sys.exit(app.exec_()) if __name__ == "__main__": main()
要获得建议,请使用
如果我没弄错你的问题,你只需要做这样的事情:
要获得建议,请使用
^{pr2}$相关问题 更多 >
编程相关推荐