python — изменение порядка QCompleter в PyQt4

Поэтому я пытаюсь создать поисковый виджет для внешнего приложения. Я нахожусь на 90%, но есть одно небольшое препятствие, и это порядок, в котором отображается список.

from PyQt4 import QtGui, QtCoreclass TabWidget(QtGui.QMainWindow):

def __init__(self):
super(TabWidget, self).__init__()

self.input = QtGui.QLineEdit()

self.custom_auto_completer = CustomCompleter()
self.custom_auto_completer.setCompletionMode(QtGui.QCompleter.PopupCompletion)
self.custom_auto_completer.setCaseSensitivity(0)
self.input.setCompleter(self.custom_auto_completer)

new_list = ['apple', 'carrot', 'commendable', 'appendable', 'happen', 'dab']

model = QtGui.QStringListModel(new_list)
self.custom_auto_completer.setModel(model)

self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Popup)
self.setCentralWidget(self.input)
self.resize(200, 20)
self.setStyleSheet("margin:5px; border:5px solid rgb(10, 10, 10); border-radius:10px")
self.input.setFocus()

self.comp = None

self.show()

def showEvent(self, event):
position = self.frameGeometry()
position.moveCenter(QtGui.QCursor.pos())
self.setGeometry(position)
super(TabWidget, self).showEvent(event)class CustomCompleter(QtGui.QCompleter):

def __init__(self):
super(CustomCompleter, self).__init__()
self.local_completion_prefix = ""self.source_model = None
self.filterProxyModel = QtGui.QSortFilterProxyModel(self)
self.usingOriginalModel = False

def setModel(self, model):
self.source_model = model
self.filterProxyModel = QtGui.QSortFilterProxyModel(self)
self.filterProxyModel.setSourceModel(self.source_model)
super(CustomCompleter, self).setModel(self.filterProxyModel)
self.usingOriginalModel = True

def updateModel(self):
if not self.usingOriginalModel:
self.filterProxyModel.setSourceModel(self.source_model)

pattern = QtCore.QRegExp(self.local_completion_prefix, QtCore.Qt.CaseInsensitive, QtCore.QRegExp.FixedString)

self.filterProxyModel.setFilterRegExp(pattern)

def splitPath(self, path):
self.local_completion_prefix = path
self.updateModel()

if self.filterProxyModel.rowCount() == 0:
self.usingOriginalModel = False
self.filterProxyModel.setSourceModel(QtGui.QStringListModel([path]))
return [path]
else:
return QtCore.QStringList()tab_search = 0def main():
global tab_search
tab_search = TabWidget()
tab_search.show()
return tab_search

if __name__ == '__main__':
app = QtGui.QApplication([])
main()
app.exec_()

Таким образом, в данный момент, если я ищу слово «dab», слова похвально и приемлемо появятся перед dab, но я бы хотел, чтобы dab появился сначала. Я очень новичок в pyqt, и я нашел пару примеров, которые, очевидно, работают в qt, но они написаны на C ++, и я не очень хорош в переводе этого в код на python.

Это другой вопрос, который, я думаю, ответил на мой вопрос, но я не уверен, как написать это в моем сценарии.

Как изменить порядок всплывающего окна QCompleter?

Любая помощь будет очень признательна.

Спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]