繁体   English   中英

Python PyQt QLineEdit到搜索栏

[英]Python PyQt QLineEdit to Search bar

我正在尝试建立翻译器并在其中添加搜索栏。使用QLineEdit,我想要的是自动完成单词。 ..我试过了。 但是这段代码不起作用,我说的是SearchBar函数。 但是其余的代码可以与其余的程序一起正常工作。 但是SearchBar函数不起作用。 并没有完成我在LineEdit中键入的内容

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)

函数setModel()setCompleter()无效,不返回任何值。

您可以这样写:

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

我已经尝试过了,它确实有效。

我发现它..它必须将列表传递给SearchBar函数而不是字典..这样可以工作..

    # 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 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM