python-3.x - 如何实时连接两个 QCombobox
问题描述
我正在研究 PyQt5 ui 框架。如何实时连接两个 QCombobox,以便 QCombobox 2 根据 QCombobox1 中的文本加载数据。
解决方案
这是一个非常小的例子。textChanged
通过将插槽连接到第一个组合框的信号来更改第二个组合框中的项目。我使用字典来查找应在第二个组合框中显示哪些项目,具体取决于第一个组合框中的当前文本。
from PyQt5.QtWidgets import QWidget, QApplication, QComboBox, QFormLayout
class Widget(QWidget):
def __init__(self, parent = None):
super().__init__(parent)
self.categories = {'animals':['cat', 'dog', 'parrot', 'fish'],
'flowers':['daisies', 'tulips', 'daffodils', 'roses'],
'colors':['red', 'orange', 'blue', 'purple']}
self.cat_combobox = QComboBox(self)
self.item_combobox = QComboBox(self)
self.cat_combobox.setEditable(False)
self.item_combobox.setEditable(False)
self.cat_combobox.currentTextChanged.connect(self.set_category)
self.cat_combobox.addItems(sorted(self.categories.keys()))
form_layout = QFormLayout(self)
form_layout.addRow('Category', self.cat_combobox)
form_layout.addRow('Items', self.item_combobox)
def set_category(self, text):
self.item_combobox.clear()
self.item_combobox.addItems(self.categories.get(text, []))
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = Widget()
window.show()
app.exec()
推荐阅读
- python - 从 Flask 容器执行主机操作系统命令
- python - python中的日期/时间多行转换问题
- c# - 我应该使用 Nullables 还是结构的唯一值?
- javascript - 打字稿忽略'typeof'运算符
- java - 禁用弹性搜索 Restclient 的 SSL 验证在 Java 中不起作用
- javascript - 如何更改我的正则表达式以匹配多个承诺语法?
- android - 将应用程序包发布到 Playstore 时,用户是否会减少所有不同 abi 版本(如 arm、x86、64)的下载大小?
- assembly - 计算排序数组中重复数字的实例,存储一个计数数组
- javascript - 如何在反应材料表的列中添加自定义复选框?
- ios - 通过不同的视图控制器从 Firebase 检索图像