How to make dynamic combobox PYQT5(如何制作动态组合框PYQT5)
本文介绍了如何制作动态组合框PYQT5的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想制作一个动态组合框,如果我在下一个组合框中选择Gasto"选项,我想查看例如Agua"、Gas"等,如果选择Financas",则只有"Fundos de tesouraria" 和 " Fundos deinvestimento de obrigações"
I want to make a dynamic combobox, if i choose the option "Gasto" in the next combobox, I want to see for example "Agua", "Gas" etc, and if, choose "Financas", have only " Fundos de tesouraria " and " Fundos de investimento de obrigações"
def initUI(self):
#self.setWindowTitle(self.title)
for t in self.tipos:
self.comboBoxCategoriaGasto.addItem(t)
for i in self.tipos2:
self.comboBoxTiposGasto_2.addItem(i)
self.tipos = ["Gasto", "Finaças"]
self.tipos2 = ["Alimentação", "Transporte", "Água","Luz","Gás","Internet", "Faculdade", "Depósitos a prazo","Fundos de tesouraria","Fundos de investimento de obrigações","Fundos de investimento de ações",]
推荐答案
你必须创建一个树型模型,其中第 n 个 QComboBox 的选中项是第 (n+1) 个 QComboBox 的 rootModelIndex:
You have to create a tree type model where the selected item of the nth QComboBox is the rootModelIndex of the (n+1)-th QComboBox:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.model = QtGui.QStandardItemModel(self)
self.combo1 = QtWidgets.QComboBox()
self.combo2 = QtWidgets.QComboBox()
self.combo1.setModel(self.model)
self.combo2.setModel(self.model)
d = {
"Gasto": ["Agua", "Gas"],
"Financas": [
"Fundos de tesouraria",
"Fundos de investimento de obrigações",
],
}
for key, options in d.items():
root_it = QtGui.QStandardItem(key)
self.model.appendRow(root_it)
for option in options:
it = QtGui.QStandardItem(option)
root_it.appendRow(it)
self.combo1.currentIndexChanged.connect(self.onCurrentIndexChanged)
self.onCurrentIndexChanged(0)
hlay = QtWidgets.QHBoxLayout(self)
hlay.addWidget(self.combo1)
hlay.addWidget(self.combo2)
@QtCore.pyqtSlot(int)
def onCurrentIndexChanged(self, index):
ix = self.model.index(index, 0, self.combo1.rootModelIndex())
self.combo2.setRootModelIndex(ix)
self.combo2.setCurrentIndex(0)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.resize(640, 120)
w.show()
sys.exit(app.exec_())
这篇关于如何制作动态组合框PYQT5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何制作动态组合框PYQT5


基础教程推荐
猜你喜欢
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 筛选NumPy数组 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01