本文介紹了如何制作動態組合框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的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!