class MyCompleter(QCompleter):
insertText = QtCore.pyqtSignal(str)
def __init__(self, parent=None):
keywords_list = ['open browser', 'click', 'input text', 'contain', 'log', 'clear',
'clearcookies', 'doubleclick', 'scrol to view', 'should', 'reload',
'and', 'wait', 'children', 'right click', '.rightclick()', 'read file'
, 'equal']
crntDir = "D:\\log"
image_list = []
philes = os.listdir(crntDir)
for phile in philes:
if phile.endswith(".png"):
image_list.append(phile)
print(image_list)
#image name in image_list
QCompleter.__init__(self,keywords_list, parent)
self.setCompletionMode(QCompleter.PopupCompletion)
QCompleter.__init__(self,image_list, parent)
self.highlighted.connect(self.setHighlighted)
def setHighlighted(self, text):
self.lastSelected = text
def getSelected(self):
return self.lastSelected
Я хочу показать два разных списка слов, keyword_list
для простого полного слова, image_list
- получить все имена изображений в назначенной папке. Если я ввожу имя изображения, то полностью покажу полное имя изображения *.png
.
import sys
import os
import qdarkstyle
from PyQt5 import QtGui, QtCore,QtWidgets
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
class MyListModel(QtCore.QAbstractListModel):
def __init__(self, datain, parent=None, *args):
QtCore.QAbstractListModel.__init__(self, parent, *args)
self.listdata = datain
def rowCount(self, parent=QtCore.QModelIndex()):
return len(self.listdata)
def data(self, index, role):
s = QtCore.QSize(250, 200)
if index.isValid() and role == QtCore.Qt.DecorationRole:
return QtGui.QIcon(QtGui.QPixmap(self.listdata[index.row()]))
if index.isValid() and role == QtCore.Qt.DisplayRole:
# print(QtCore.QVariant(self.ListItemData[index.row()]['name']))
return QtCore.QVariant(os.path.splitext(os.path.split(self.listdata[index.row()])[-1])[0])
else:
return QtCore.QVariant()
def getItem(self, index):
if index > -1 and index < len(self.ListItemData):
return self.ListItemData[index]
class MyListView(QtWidgets.QListView):
def __init__(self,parent=None):
super(MyListView, self).__init__(parent)
self.Listview = QListView()
self.setViewMode(QtWidgets.QListView.IconMode)
self.setIconSize(QtCore.QSize(90, 90))
self.setGridSize(QtCore.QSize(110, 110))
crntDir = "D:\\log"
list_data = []
image_list = []
philes = os.listdir(crntDir)
for phile in philes:
if phile.endswith(".png"):
list_data.append(os.path.join(crntDir, phile))
image_list.append(phile)
self.List_data = list_data
lm = MyListModel(list_data)
self.setModel(lm)
self.show()
self.clicked.connect(self.onclicked)
def onclicked(self,item):
image_selected_path = self.List_data[item.row()]
print(image_selected_path)
self.close()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = MyListView()
window.setWindowOpacity(0.9)
window.show()
window.raise_()
sys.exit(app.exec_())
Я хочу, чтобы в этом окне отображалось совпадающее имя изображения. Как объединить эти две функции