2014-01-29 75 views
1
選擇高亮顯示

我試圖在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

您發佈的代碼有幾處錯誤。

信號連接應使用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_()) 
相關問題