2016-08-21 17 views
0

翻訳者をビルドして検索バーを.with 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) 

答えて

0

私は...そう、この作品 ...それは...それは検索バーの機能はない辞書にリストを渡す必要があります再生する

# 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 
0

関数使ってsetModel()とsetCompleter()で入力無効であるかを完了していない、何も値を返しません。

ドク: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