本文整理汇总了Python中PyQt5.QtWidgets.QPlainTextEdit.setTextCursor方法的典型用法代码示例。如果您正苦于以下问题:Python QPlainTextEdit.setTextCursor方法的具体用法?Python QPlainTextEdit.setTextCursor怎么用?Python QPlainTextEdit.setTextCursor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QPlainTextEdit
的用法示例。
在下文中一共展示了QPlainTextEdit.setTextCursor方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: PackageDialog
# 需要导入模块: from PyQt5.QtWidgets import QPlainTextEdit [as 别名]
# 或者: from PyQt5.QtWidgets.QPlainTextEdit import setTextCursor [as 别名]
#.........这里部分代码省略.........
if os.path.basename(d).lower().startswith(pkg_name + '-'):
self.pkg_dirs[pkg] = d
if self.pkg_dirs:
# If there are packages to remove, schedule removal.
QTimer.singleShot(2, self.remove_package)
def remove_package(self):
"""
Take a package from the pending packages to be removed, delete all its
assets and schedule the removal of the remaining packages. If there are
no packages to remove, move to the finished state.
"""
if self.pkg_dirs:
package, dist = self.pkg_dirs.popitem()
record = os.path.join(dist, 'RECORD')
with open(record) as f:
files = csv.reader(f)
for row in files:
to_delete = os.path.join(self.module_dir, row[0])
try:
os.remove(to_delete)
except Exception as ex:
logger.error('Unable to remove: {}'.format(to_delete))
logger.error(ex)
shutil.rmtree(dist, ignore_errors=True)
# Some modules don't use the module name for the module directory
# (they use a lower case variant thereof). E.g. "Fom" vs. "fom".
normal_module = os.path.join(self.module_dir, package)
lower_module = os.path.join(self.module_dir, package.lower())
shutil.rmtree(normal_module, ignore_errors=True)
shutil.rmtree(lower_module, ignore_errors=True)
self.append_data('Removed {}\n'.format(package))
QTimer.singleShot(2, self.remove_package)
else:
# Clean any directories not containing files.
dirs = [os.path.join(self.module_dir, d)
for d in os.listdir(self.module_dir)]
for d in dirs:
keep = False
for entry in os.walk(d):
if entry[2]:
keep = True
if not keep:
shutil.rmtree(d, ignore_errors=True)
# Check for end state.
if not (self.to_add or self.process):
self.end_state()
def end_state(self):
"""
Set the UI to a valid end state.
"""
self.append_data('\nFINISHED')
self.button_box.button(QDialogButtonBox.Ok).setEnabled(True)
def run_pip(self):
"""
Run a pip command in a subprocess and pipe the output to the dialog's
text area.
"""
package = self.to_add.pop()
args = ['-m', 'pip', 'install', package, '--target',
self.module_dir]
self.process = QProcess(self)
self.process.setProcessChannelMode(QProcess.MergedChannels)
self.process.readyRead.connect(self.read_process)
self.process.finished.connect(self.finished)
self.process.start(sys.executable, args)
def finished(self):
"""
Called when the subprocess that uses pip to install a package is
finished.
"""
if self.to_add:
self.process = None
self.run_pip()
else:
if not self.pkg_dirs:
self.end_state()
def read_process(self):
"""
Read data from the child process and append it to the text area. Try
to keep reading until there's no more data from the process.
"""
data = self.process.readAll()
if data:
self.append_data(data.data().decode('utf-8'))
QTimer.singleShot(2, self.read_process)
def append_data(self, msg):
"""
Add data to the end of the text area.
"""
cursor = self.text_area.textCursor()
cursor.movePosition(QTextCursor.End)
cursor.insertText(msg)
cursor.movePosition(QTextCursor.End)
self.text_area.setTextCursor(cursor)
示例2: AddGlyphsDialog
# 需要导入模块: from PyQt5.QtWidgets import QPlainTextEdit [as 别名]
# 或者: from PyQt5.QtWidgets.QPlainTextEdit import setTextCursor [as 别名]
class AddGlyphsDialog(QDialog):
# TODO: implement Frederik's Glyph Construction Builder
def __init__(self, currentGlyphs=None, parent=None):
super().__init__(parent)
self.setWindowModality(Qt.WindowModal)
self.setWindowTitle(self.tr("Add Glyphs…"))
self.currentGlyphs = currentGlyphs
self.currentGlyphNames = [glyph.name for glyph in currentGlyphs]
layout = QGridLayout(self)
self.markColorWidget = ColorVignette(self)
self.markColorWidget.setFixedWidth(56)
self.importCharDrop = QComboBox(self)
self.importCharDrop.addItem(self.tr("Import glyph names…"))
glyphSets = settings.readGlyphSets()
for name, glyphNames in glyphSets.items():
self.importCharDrop.addItem(name, glyphNames)
self.importCharDrop.currentIndexChanged[int].connect(self.importGlyphs)
self.addGlyphsEdit = QPlainTextEdit(self)
self.addGlyphsEdit.setFocus(True)
self.addUnicodeBox = QCheckBox(self.tr("Add Unicode"), self)
self.addUnicodeBox.setChecked(True)
self.addAsTemplateBox = QCheckBox(self.tr("Add as template"), self)
self.addAsTemplateBox.setChecked(True)
self.sortFontBox = QCheckBox(self.tr("Sort font"), self)
self.overrideBox = QCheckBox(self.tr("Override"), self)
buttonBox = QDialogButtonBox(
QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
buttonBox.accepted.connect(self.accept)
buttonBox.rejected.connect(self.reject)
l = 0
layout.addWidget(self.markColorWidget, l, 0)
layout.addWidget(self.importCharDrop, l, 3, 1, 2)
l += 1
layout.addWidget(self.addGlyphsEdit, l, 0, 1, 5)
l += 1
layout.addWidget(self.addUnicodeBox, l, 0)
layout.addWidget(self.addAsTemplateBox, l, 1)
layout.addWidget(self.sortFontBox, l, 2)
layout.addWidget(self.overrideBox, l, 3)
layout.addWidget(buttonBox, l, 4)
self.setLayout(layout)
@classmethod
def getNewGlyphNames(cls, parent, currentGlyphs=None):
dialog = cls(currentGlyphs, parent)
result = dialog.exec_()
markColor = dialog.markColorWidget.color()
if markColor is not None:
markColor = markColor.getRgbF()
params = dict(
addUnicode=dialog.addUnicodeBox.isChecked(),
asTemplate=dialog.addAsTemplateBox.isChecked(),
markColor=markColor,
override=dialog.overrideBox.isChecked(),
sortFont=dialog.sortFontBox.isChecked(),
)
newGlyphNames = []
for name in dialog.addGlyphsEdit.toPlainText().split():
if name not in dialog.currentGlyphNames:
newGlyphNames.append(name)
return (newGlyphNames, params, result)
def importGlyphs(self, index):
if index == 0:
return
glyphNames = self.importCharDrop.currentData()
editorNames = self.addGlyphsEdit.toPlainText().split()
currentNames = set(self.currentGlyphNames) ^ set(editorNames)
changed = False
for name in glyphNames:
if name not in currentNames:
changed = True
editorNames.append(name)
if changed:
self.addGlyphsEdit.setPlainText(" ".join(editorNames))
cursor = self.addGlyphsEdit.textCursor()
cursor.movePosition(QTextCursor.End, QTextCursor.MoveAnchor)
self.addGlyphsEdit.setTextCursor(cursor)
self.importCharDrop.setCurrentIndex(0)
self.addGlyphsEdit.setFocus(True)
示例3: HgServeDialog
# 需要导入模块: from PyQt5.QtWidgets import QPlainTextEdit [as 别名]
# 或者: from PyQt5.QtWidgets.QPlainTextEdit import setTextCursor [as 别名]
#.........这里部分代码省略.........
self.process.start('hg', args)
procStarted = self.process.waitForStarted(5000)
if procStarted:
self.__startAct.setEnabled(False)
self.__stopAct.setEnabled(True)
self.__browserAct.setEnabled(True)
self.__portSpin.setEnabled(False)
self.__styleCombo.setEnabled(False)
self.vcs.getPlugin().setPreferences("ServerPort", port)
self.vcs.getPlugin().setPreferences("ServerStyle", style)
else:
E5MessageBox.critical(
self,
self.tr('Process Generation Error'),
self.tr(
'The process {0} could not be started. '
'Ensure, that it is in the search path.'
).format('hg'))
def __stopServer(self):
"""
Private slot to stop the Mercurial server.
"""
if self.process is not None and \
self.process.state() != QProcess.NotRunning:
self.process.terminate()
self.process.waitForFinished(5000)
if self.process.state() != QProcess.NotRunning:
self.process.kill()
self.__startAct.setEnabled(True)
self.__stopAct.setEnabled(False)
self.__browserAct.setEnabled(False)
self.__portSpin.setEnabled(True)
self.__styleCombo.setEnabled(True)
def __startBrowser(self):
"""
Private slot to start a browser for the served repository.
"""
ui = e5App().getObject("UserInterface")
ui.launchHelpViewer(
"http://localhost:{0}".format(self.__portSpin.value()))
def closeEvent(self, e):
"""
Protected slot implementing a close event handler.
@param e close event (QCloseEvent)
"""
self.__stopServer()
def __procFinished(self, exitCode, exitStatus):
"""
Private slot connected to the finished signal.
@param exitCode exit code of the process (integer)
@param exitStatus exit status of the process (QProcess.ExitStatus)
"""
self.__stopServer()
def __readStdout(self):
"""
Private slot to handle the readyReadStandardOutput signal.
It reads the output of the process and inserts it into the log.
"""
if self.process is not None:
s = str(self.process.readAllStandardOutput(),
self.vcs.getEncoding(), 'replace')
self.__appendText(s, False)
def __readStderr(self):
"""
Private slot to handle the readyReadStandardError signal.
It reads the error output of the process and inserts it into the log.
"""
if self.process is not None:
s = str(self.process.readAllStandardError(),
self.vcs.getEncoding(), 'replace')
self.__appendText(s, True)
def __appendText(self, txt, error=False):
"""
Private method to append text to the end.
@param txt text to insert (string)
@param error flag indicating to insert error text (boolean)
"""
tc = self.__log.textCursor()
tc.movePosition(QTextCursor.End)
self.__log.setTextCursor(tc)
if error:
self.__log.setCurrentCharFormat(self.cErrorFormat)
else:
self.__log.setCurrentCharFormat(self.cNormalFormat)
self.__log.insertPlainText(txt)
self.__log.ensureCursorVisible()