【发布时间】:2021-03-04 12:40:13
【问题描述】:
我为使用 pyqt5 和 python 构建的简单浏览器构建了一个谷歌搜索建议完成器。代码如下。
self.url_bar = QLineEdit()
self.url_bar.textChanged.connect(self.suggest)
def suggest(self):
suggestlist =[]
term = self.url_bar.text()
if not (validators.url(term) and term != '') :
url = f"http://toolbarqueries.google.com/complete/search?q={term}&output=toolbar&hl=en"
suggestions = requests.get(url)
suggestions = ET.fromstring(suggestions.content)
for data in suggestions.iter('suggestion'):
suggestlist.append(data.attrib['data'])
suggester = QCompleter(suggestlist)
self.url_bar.setCompleter(suggester)
这会正确生成建议,但浏览器会意外关闭。请帮帮我。
【问题讨论】:
-
您不能为此使用请求,因为它会阻止程序,直到它得到回复。此外,发送每个文本更改的请求不是一个好主意,因为您将发送每个字符类型的请求。使用 singleShot QTimer,它在超时时使用 QThread(或者更好的 QNetworkAccessManager)发送请求,并将
textChanged连接到计时器的开始处。
标签: python python-3.x pyqt5 qlineedit qcompleter