#!python3
# -*- coding: utf-8 -*-
import sys
import os.path
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtUiTools import QUiLoader
CURRENT_PATH = os.path.dirname(os.path.abspath(sys.argv[0]))
class UISample(QtWidgets.QDialog):
def __init__(self, parent=None):
super(UISample, self).__init__(parent)
# カスタムUIを作成
layout = QtWidgets.QVBoxLayout()
self.listView = QtWidgets.QListView()
layout.addWidget(self.listView)
self.lineEdit = QtWidgets.QLineEdit()
layout.addWidget(self.lineEdit)
label = QtWidgets.QLabel('↓に入力された文字の列を選択')
layout.addWidget(label)
self.lineEditB = QtWidgets.QLineEdit()
layout.addWidget(self.lineEditB)
self.setLayout(layout)
# ここまでUI作成
# Model作成
self.model = QtCore.QStringListModel()
self.model.setStringList(['aaa', 'bbb', 'ccc'])
self.listView.setModel(self.model)
# Signal-Slot作成
self.lineEdit.returnPressed.connect(self.addList)
self.listView.clicked.connect(self.listClicked)
self.lineEditB.returnPressed.connect(self.matchSelect)
def matchSelect(self):
# Listから指定の文字の行を探して、見つかったら選択
txt = self.lineEditB.text()
stIndex = self.model.index(0, 0)
searchIndex = self.model.match(stIndex, QtCore.Qt.DisplayRole, txt)
if len(searchIndex) > 0:
self.listView.setCurrentIndex(searchIndex[0])
self.lineEditB.clear()
def listClicked(self, index):
# 現在選択している文字列を取得する
print(index.data())
def addList(self):
txt = self.lineEdit.text()
strList = self.model.stringList()
strList.append(txt)
self.model.setStringList(strList)
self.lineEdit.clear()
def printIndex(self):
print(self.combobox.currentIndex())
def printText(self):
print(self.combobox.currentText())
def searchText(self):
# LineEditに記述されたテキストのIndexを取得
txt = self.lineEdit.text()
print(self.combobox.findText(txt))
def removeItem(self):
# 今選択しているItemを削除する
currentIndex = self.combobox.currentIndex()
self.combobox.removeItem(currentIndex)
def printCount(self):
# 現在の項目数をプリントする
print(self.combobox.count())
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
a = UISample()
a.show()
sys.exit(app.exec_())