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,不返回任何值。
你可以这样写:
AraKey = ['a','ab','abc']
ModAra = QtGui.QStringListModel()
ModAra.setStringList(AraKey)
ComAra = QtGui.QCompleter()
ComAra.setModel(ModAra)
self.LineEditAra.setCompleter(ComAra)
我HAVA尝试这样做,它确实有效。
感谢重播。但我知道它会工作,如果我设置列表如 AraKey = ['a','ab','abc'] 但问题是将数据库中的键和值传递给SearchBar函数。它给我其他resulte :(不工作,我认为,因为键不是一个列表,所以我会找到一种方法来首先将它转换为列表。 – PyCoder
反正你关于setModel()和setCompleter()的说明 是非常有帮助..谢谢 – PyCoder