Python PyQt QLineEdit搜索栏

问题描述:

正试图建立翻译,并把它放在一个搜索栏。与QLineEdit 和我想要的是自动完成这个词。 .. 我试过了。但是这个代码不工作,我在谈论SearchBar功能。但其余的代码正好与其他程序一起工作。但SearchBar功能不起作用。并没有完成我输入的内容LineEditPython PyQt QLineEdit搜索栏

from PyQt4 import QtGui,QtCore 
import sys 
from MainWin import Ui_MainWindow 
import sqlite3 

conn = sqlite3.connect('DictDB.db') 
cors = conn.cursor() 


class MainApp(QtGui.QMainWindow,Ui_MainWindow): 
    def __init__(self): 
     super(MainApp,self).__init__() 

     self.setupUi(self) 
     self.showMaximized() 

     cors.execute("SELECT * FROM DictContents") 
     for raw in cors.fetchall(): 
      self.TextBrowserAra.append(raw[0]) 
      self.TextBrowserGer.append(raw[1]) 
      self.SearchBar(raw[0].strip(),raw[1].strip()) 


    def SearchBar(self,keys,values): 
     mydict = {} 
     AraKey = mydict[0]=[keys] 
     GerKey = mydict[1]=[values] 
     Model = QtGui.QStringListModel() 
     ModAra = Model.setStringList(AraKey) 
     ModGer = Model.setStringList(GerKey) 
     completer = QtGui.QCompleter() 
     CompAra = completer.setModel(ModAra) 
     ComGer = completer.setModel(ModGer) 
     self.LineEditAra.setCompleter(CompAra) 
     self.LineEditGer.setCompleter(ComGer) 

我发现它..它必须通过一个列表,搜索栏的功能不是字典.. 所以此工程..

# first make an empty lists 
    self.AraList = [] 
    self.GerList = [] 
    for raw in cors.fetchall(): 
     self.AraList.append(raw[0]) # put all data in one list 
     self.GerList.append(raw[1]) # " " 
    self.SearchBar(self.AraList,self.GerList) # passing the lists to SearchBar Function 

def SearchBar(self,keys,values): 
    print(keys) #make sure its returns one big list , Lets try the keys first 
    ModAra = QtGui.QStringListModel() 
    ModAra.setStringList(keys) 
    ComAra = QtGui.QCompleter() 
    ComAra.setModel(ModAra) 
    self.LineEditAra.setCompleter(ComAra) 
    # It worked just fine 

函数setModel()和setCompleter()是void,不返回任何值。

文件:setModelsetCompleter

你可以这样写:

AraKey = ['a','ab','abc'] 
    ModAra = QtGui.QStringListModel() 
    ModAra.setStringList(AraKey) 
    ComAra = QtGui.QCompleter() 
    ComAra.setModel(ModAra) 
    self.LineEditAra.setCompleter(ComAra) 

我HAVA尝试这样做,它确实有效。

+0

感谢重播。但我知道它会工作,如果我设置列表如 AraKey = ['a','ab','abc'] 但问题是将数据库中的键和值传递给SearchBar函数。它给我其他resulte :(不工作,我认为,因为键不是一个列表,所以我会找到一种方法来首先将它转换为列表。 – PyCoder

+0

反正你关于setModel()和setCompleter()的说明 是非常有帮助..谢谢 – PyCoder