junboli 2023-12-07 18:11 采纳率: 75%
浏览 25
已结题

pyqt5 如何实现输入框输入关键词,下拉框显示模糊查询返回的结果?

如何通过QT Designer 或者pyqt5 实现输入框输入关键词,下拉框显示模糊查询返回的结果, 实现最终的效果类似百度搜索模糊查询那种样式?

img

  • 写回答

14条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-12-07 18:12
    关注

    引自强大而免费的微信小程序:皆我百晓生

    要实现输入框输入关键词,下拉框显示模糊查询返回的结果,可以通过以下步骤来实现:

    1. 创建主窗口
    首先,我们需要创建一个主窗口来容纳输入框和下拉框。使用PyQt5提供的QWidget类创建一个新的窗口。

    import sys
    from PyQt5.QtWidgets import QApplication, QWidget
    
    # 创建一个新的应用程序实例
    app = QApplication(sys.argv)
    
    # 创建一个QWidget类的实例作为主窗口
    window = QWidget()
    
    # 设置窗口大小
    window.setGeometry(100, 100, 300, 200)
    
    # 显示窗口
    window.show()
    
    # 运行应用程序
    sys.exit(app.exec_())
    

    2. 添加输入框和下拉框
    接下来,我们向主窗口中添加一个输入框和一个下拉框。

    import sys
    from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QComboBox, QVBoxLayout
    
    app = QApplication(sys.argv)
    window = QWidget()
    window.setGeometry(100, 100, 300, 200)
    
    # 创建一个QLineEdit类的实例作为输入框
    input_box = QLineEdit()
    
    # 创建一个QComboBox类的实例作为下拉框
    drop_down_box = QComboBox()
    
    # 创建一个垂直布局,并将输入框和下拉框添加到布局中
    layout = QVBoxLayout()
    layout.addWidget(input_box)
    layout.addWidget(drop_down_box)
    
    # 将布局设置为主窗口的布局
    window.setLayout(layout)
    
    window.show()
    sys.exit(app.exec_())
    

    3. 实现模糊查询功能
    现在我们需要实现模糊查询的功能。可以通过信号和槽机制来实现。具体步骤如下:

    • 使用QLineEdit的textChanged信号,当输入框的文本改变时触发。将这个信号连接到一个处理函数上。
    • 在处理函数中,根据输入框的文本进行模糊查询,并将查询结果添加到下拉框中。
    import sys
    from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QComboBox, QVBoxLayout
    
    app = QApplication(sys.argv)
    window = QWidget()
    window.setGeometry(100, 100, 300, 200)
    
    input_box = QLineEdit()
    drop_down_box = QComboBox()
    layout = QVBoxLayout()
    layout.addWidget(input_box)
    layout.addWidget(drop_down_box)
    window.setLayout(layout)
    
    # 创建处理函数来进行模糊查询
    def handle_text_changed(text):
        # 清空下拉框的内容
        drop_down_box.clear()
    
        # 模拟模糊查询的结果
        results = ['abcc的四字词语', 'abab的四字词语', 'ab型血', 'abac的四字词语', 'ab型和o型生的孩子是什么血型', 'ab型血为什么叫贵族血', 'abob是什么药', 'abb的二字词语', 'abcdefg26个字母表', 'abbc式的词语']
    
        # 根据输入框的文本进行模糊匹配
        matched_results = [result for result in results if text in result]
    
        # 将匹配到的结果添加到下拉框中
        drop_down_box.addItems(matched_results)
    
    # 将输入框的textChanged信号连接到处理函数上
    input_box.textChanged.connect(handle_text_changed)
    
    window.show()
    sys.exit(app.exec_())
    

    最后,运行代码,你就可以看到一个输入框和一个下拉框,当你在输入框中输入关键词时,下拉框会显示模糊查询的结果。

    希望这些步骤对你有所帮助,如果有任何问题,请随时提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(13条)

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 修改了问题 12月7日
  • 修改了问题 12月7日
  • 展开全部

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵