我想在LineEdit中输入文本时突出显示列表中的项目,但是,我不仅无法使其工作,而且还没有突出显示列表中的项目。我在某处写错了吗?有什么建议吗?
fruitsList = QListWidget()
list01 = ['Apple','Pear','Orange','Grape','Lychee']
self.fruitsList.addItems(list01)
textInput = QLineEdit()
fruitTxt = str(textInput)
self.connect(self.textInput,('returnPressed()'), self.updateSelect)
def updateSelect(self):
self.fruitsList.findItems(str(fruitTxt), flags = Qt.MatchExactly)
self.fruitsList.setCurrentIndex(0)
答案 0 :(得分:0)
您发布的代码存在一些问题。
信号连接应使用QtCore.SIGNAL('returnPressed()')
。但是使用new-style syntax会更好,这更容易出错。
您的信号处理程序也存在一些问题。您需要使用行编辑的text()
方法来检索当前文本,并使用findItems()
的返回值来选择列表中的项目。
这是一个小型演示,展示了如何完成它:
from PyQt4 import QtCore, QtGui
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.fruitsList = QtGui.QListWidget(self)
items = 'Apple Pear Orange Grape Lychee'.split()
self.fruitsList.addItems(items)
self.textInput = QtGui.QLineEdit(self)
self.textInput.returnPressed.connect(self.updateSelect)
self.textInput.setFocus()
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.fruitsList)
layout.addWidget(self.textInput)
def updateSelect(self):
self.fruitsList.clearSelection()
for item in self.fruitsList.findItems(
self.textInput.text(), QtCore.Qt.MatchFixedString):
item.setSelected(True)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(500, 300, 300, 200)
window.show()
sys.exit(app.exec_())