PySide2: проблемы с завершением всплывающего кода QListWidget и управлением фокусомPython

Программы на Python
Anonymous
PySide2: проблемы с завершением всплывающего кода QListWidget и управлением фокусом

Сообщение Anonymous »

Я пытаюсь создать систему завершения кода, подобную IntelliSense, внутри QPlainTextEdit, используя PySide2. Однако у меня возникают проблемы с управлением фокусом и скрытием QListWidget, когда он появляется. Цель состоит в том, чтобы всплывающее окно появлялось, когда пользователь печатает, позволяя ему продолжать печатать в текстовом редакторе, пока всплывающее окно видимо, а затем скрывать всплывающее окно, когда это необходимо (например, нажатие клавиши Escape или перемещение курсора).
Вот основные проблемы, с которыми я сталкиваюсь:
Проблема фокусировки: я использую self.completer_list.setFocusPolicy(Qt.NoFocus) для не позволяет всплывающему окну получить фокус, но при использовании Qt.Popup фокус по-прежнему смещается на QListWidget, а остальная часть программы перестает отвечать на запросы, пока я не взаимодействую со всплывающим окном.
Скрытие всплывающего окна Проблема: я использую self.completer_list.hide(), чтобы скрыть всплывающее окно, но оно не всегда скрывается должным образом или плохо реагирует на щелчок за пределами или при перемещении курсора.
Что я могу делать не так в своем коде?
Это часть моего кода:
self.temp_completer_list = ["for", "while", "if", "else", "elif", "def",
"class", "import", "from", "return", "try",
"except", "finally"]
self.completer_list = QListWidget()
self.completer_list.addItems(self.temp_completer_list)
self.completer_list.setWindowFlag(Qt.Popup)
self.completer_list.hide()
self.textChanged.connect(self.show_completer_list)

def show_completer_list(self):
"""CURSOR TO POPUP"""
cursor = self.textCursor()
pos = self.cursorRect(cursor).bottomRight()
global_pos = self.mapToGlobal(pos)
self.completer_list.move(global_pos)
self.completer_list.show()
self.completer_list.setFocusPolicy(Qt.NoFocus)


Подробнее здесь: https://stackoverflow.com/questions/790 ... ent-issues

Вернуться в «Python»