本文整理汇总了Python中PySide.QtGui.QCompleter.popup方法的典型用法代码示例。如果您正苦于以下问题:Python QCompleter.popup方法的具体用法?Python QCompleter.popup怎么用?Python QCompleter.popup使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PySide.QtGui.QCompleter
的用法示例。
在下文中一共展示了QCompleter.popup方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CodeCompletionMode
# 需要导入模块: from PySide.QtGui import QCompleter [as 别名]
# 或者: from PySide.QtGui.QCompleter import popup [as 别名]
#.........这里部分代码省略.........
"""
if state:
self.editor.codeEdit.keyPressed.connect(self._onKeyPressed)
self.editor.codeEdit.postKeyPressed.connect(self._onKeyReleased)
self.editor.codeEdit.focusedIn.connect(self._onFocusIn)
self.__completer.highlighted.connect(
self._displayHighlightedTooltip)
else:
self.editor.codeEdit.keyPressed.disconnect(self._onKeyPressed)
self.editor.codeEdit.postKeyPressed.disconnect(self._onKeyReleased)
self.editor.codeEdit.focusedIn.disconnect(self._onFocusIn)
self.__completer.highlighted.disconnect(
self._displayHighlightedTooltip)
def _onFocusIn(self, event):
"""
Resets completer widget
:param event: QFocusEvent
"""
self.__completer.setWidget(self.editor.codeEdit)
def _onHighlighted(self, completion):
"""
Remembers the current completion when the hilighted signal is emitted.
:param completion: Current completion
"""
self.currentCompletion = completion
def _onKeyReleased(self, event):
"""
Handles the key released event to adapt completer prefix, run the cc
library if necessary or prevent completer popup when removing text.
:param event:
:return:
"""
word = self._textUnderCursor()
isShortcut = self._isShortcut(event) or event.key() == Qt.Key_Period
tooShort = len(word) < self.nbTriggerChars
# closes popup if completion prefix is empty and we are not removing
# some text
if (not self.__completer.popup().isVisible() and
event.key() == Qt.Key_Backspace or event.key() == Qt.Key_Delete) or\
(not isShortcut and event.modifiers() == 0 and (
word.isspace() or word == "")):
self._hideCompletions()
return
# . is an auto-trigger
if self.periodIsTrigger and \
(event.key() == Qt.Key_Period and self.autoTrigger):
self._requestCompletion(completionPrefix=word, onlyAdapt=False)
return
# adapt completion prefix
if self.__completer.popup().isVisible():
self._requestCompletion(completionPrefix=word, onlyAdapt=True)
# run cc if word is long enough and auto trigger is on
elif not tooShort and self.autoTrigger and event.text() != "" \
and (event.modifiers() == 0 or
event.modifiers() & Qt.ShiftModifier):
self._requestCompletion(completionPrefix=word, onlyAdapt=False)
def _isShortcut(self, event):
"""
示例2: CommandBox
# 需要导入模块: from PySide.QtGui import QCompleter [as 别名]
# 或者: from PySide.QtGui.QCompleter import popup [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)
示例3: EditorCodeCompletion
# 需要导入模块: from PySide.QtGui import QCompleter [as 别名]
# 或者: from PySide.QtGui.QCompleter import popup [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 :
#.........这里部分代码省略.........