本文整理汇总了Python中PySide.QtGui.QCompleter.complete方法的典型用法代码示例。如果您正苦于以下问题:Python QCompleter.complete方法的具体用法?Python QCompleter.complete怎么用?Python QCompleter.complete使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PySide.QtGui.QCompleter
的用法示例。
在下文中一共展示了QCompleter.complete方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CommandBox
# 需要导入模块: from PySide.QtGui import QCompleter [as 别名]
# 或者: from PySide.QtGui.QCompleter import complete [as 别名]
class CommandBox(QtGui.QPlainTextEdit, object):
newCommand = QtCore.Signal(str)
def reset_history(self):
self.history_index = len(self.history)
def __init__(self, history, commands):
self.history_index = 0
self.history = history
self.reset_history()
super(CommandBox, self).__init__()
#Autocompleter
self.completer = QCompleter([BOT_PREFIX + name for name in commands], self)
self.completer.setCaseSensitivity(Qt.CaseInsensitive)
self.completer.setWidget(self)
self.completer.activated.connect(self.onAutoComplete)
self.autocompleteStart = None
def onAutoComplete(self, text):
#Select the text from autocompleteStart until the current cursor
cursor = self.textCursor()
cursor.setPosition(0, cursor.KeepAnchor)
#Replace it with the selected text
cursor.insertText(text)
self.autocompleteStart = None
#noinspection PyStringFormat
def keyPressEvent(self, *args, **kwargs):
event = args[0]
key = event.key()
ctrl = event.modifiers() == QtCore.Qt.ControlModifier
# don't disturb the completer behavior
if self.completer.popup().isVisible() and key in (Qt.Key_Enter, Qt.Key_Return, Qt.Key_Tab, Qt.Key_Backtab):
event.ignore()
return
if self.autocompleteStart is not None and not event.text().isalnum() and \
not (key == Qt.Key_Backspace and self.textCursor().position() > self.autocompleteStart):
self.completer.popup().hide()
self.autocompleteStart = None
if key == Qt.Key_Space and ctrl:
#Pop-up the autocompleteList
rect = self.cursorRect(self.textCursor())
rect.setSize(QtCore.QSize(100, 150))
self.autocompleteStart = self.textCursor().position()
self.completer.complete(rect) # The popup is positioned in the next if block
if self.autocompleteStart:
prefix = self.toPlainText()
cur = self.textCursor()
cur.setPosition(self.autocompleteStart)
self.completer.setCompletionPrefix(prefix)
#Select the first one of the matches
self.completer.popup().setCurrentIndex(self.completer.completionModel().index(0, 0))
if key == Qt.Key_Up and ctrl:
if self.history_index > 0:
self.history_index -= 1
self.setPlainText(BOT_PREFIX + '%s %s' % self.history[self.history_index])
key.ignore()
return
elif key == Qt.Key_Down and ctrl:
if self.history_index < len(self.history) - 1:
self.history_index += 1
self.setPlainText(BOT_PREFIX + '%s %s' % self.history[self.history_index])
key.ignore()
return
elif key == QtCore.Qt.Key_Return and ctrl:
self.newCommand.emit(self.toPlainText())
self.reset_history()
super(CommandBox, self).keyPressEvent(*args, **kwargs)
示例2: EditorCodeCompletion
# 需要导入模块: from PySide.QtGui import QCompleter [as 别名]
# 或者: from PySide.QtGui.QCompleter import complete [as 别名]
class EditorCodeCompletion(QTextEdit):
def __init__(self, path_dict):
super(EditorCodeCompletion, self).__init__()
self.m_completer = QCompleter(self)
self.m_completer.setWidget(self)
words = []
self.flag_open_angle_bracket = False
self.tag_name = ""
try:
f = open(path_dict,"r")
for word in f:
words.append(word.strip())
f.close()
except IOError:
print ("dictionary not in anticipated location")
model = QStringListModel(words, self.m_completer)
self.m_completer.setModel(model)
self.m_completer.setCompletionMode(QCompleter.PopupCompletion)
self.m_completer.activated.connect(self.insertCompletion)
def insertCompletion (self, completion):
cursor = self.textCursor()
cursor.beginEditBlock()
cursor.movePosition(QTextCursor.Left)
cursor.movePosition(QTextCursor.EndOfWord)
extra = len(self.m_completer.completionPrefix())
cursor.insertText(completion[extra:])
self.setTextCursor(cursor)
cursor.endEditBlock()
def __insertTag(self):
'''
inserts the corresponding closing tag to an opening xml tag
'''
self.find('<', QTextDocument.FindBackward)
tc = self.textCursor()
tc.select(QTextCursor.WordUnderCursor)
txt = '' if self.__stringHasBracket(tc.selectedText().replace(' ', '')) else tc.selectedText()
txt = '</' + txt + '>'
self.find('>')
tc = self.textCursor()
tc.clearSelection()
tc.insertText(txt)
tc.movePosition(QTextCursor.Left, QTextCursor.MoveAnchor, len(txt))
self.setTextCursor(tc)
def __stringHasBracket(self, s):
return '<' in s or '>' in s
def __insertClosingTag(self, event):
operation_sys = sys.platform
flag = "linux" in operation_sys
if flag :
self.__insertClosingTag_Unix(event)
else:
self.__insertClosingTag_Win(event)
def __insertClosingTag_Unix(self, event):
'''
inserts a closing tag after the closing bracket of open tag
@param key: keyboard input value as int
'''
if self.flag_open_angle_bracket :
if event.key() == 47 : # /
print ("/")
self.flag_open_angle_bracket = False
elif event.key() == 62 : # >
print (">")
self.__insertTag()
self.flag_open_angle_bracket = False
elif event.key() == 60 : # <
print ("<")
self.flag_open_angle_bracket = True
def __insertClosingTag_Win(self, event) :
if self.flag_open_angle_bracket :
if event.modifiers() & Qt.ShiftModifier :
if event.key() == 55 : # /
print ("/")
self.flag_open_angle_bracket = False
elif event.key() == 60 : # >
print (">")
self.__insertTag()
self.flag_open_angle_bracket = False
elif event.key() == 60 : # <
print ("<")
self.flag_open_angle_bracket = True
def keyPressEvent(self, event):
'''
checks keyboard input to set closing tag or start code completion
'''
if self.m_completer.popup().isVisible() :
if event.key() == Qt.Key_Enter or event.key() == Qt.Key_Return or event.key() == Qt.Key_Tab or event.key() == Qt.Key_Escape :
#.........这里部分代码省略.........