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

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 memory.limit()' is no longer supported
  • ¥15 基于stm32f4产生两路pwm信号并可由串口通信调节
  • ¥15 C++/QT设置函数调用条件(多个功能调用同一,且各自调用条件不同)
  • ¥15 UE5样条线生成的网格UV问题
  • ¥15 如何用最短的时间大致看懂springboot+vue的项目
  • ¥15 (有偿)懂数值分析和含时变参数微分方程的来
  • ¥15 abaqus随机生成二维颗粒
  • ¥15 安装ansys许可证管理器时出现了这个问题,如何解决?
  • ¥100 高价求算法,利用智能手机传感器计算车辆的三轴g值
  • ¥15 uni-app开发APP运行到浏览器访问接口跨域