Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyqt5中显示带有列的选中列表的最佳小部件是什么_Python_Pyqt_Pyqt5 - Fatal编程技术网

Python pyqt5中显示带有列的选中列表的最佳小部件是什么

Python pyqt5中显示带有列的选中列表的最佳小部件是什么,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我正在寻找一个小部件,它是一个列表框,其中一个条目具有由列名表示的不同属性。 我希望能够使用左侧的复选框从列表中选择多个条目 请告诉我如何配置它。谢谢。本例中的解决方案是使用QTableView(自定义某些方面,如标题复选框): 导入系统 从PyQt5导入QtCore、QtGui、QtWidgets 类HeaderView(qtwidts.QHeaderView): 选中=QtCore.pyqtSignal(bool) def uuu init uuuu(自我、方向、父项=无): 超级() s

我正在寻找一个小部件,它是一个列表框,其中一个条目具有由列名表示的不同属性。 我希望能够使用左侧的复选框从列表中选择多个条目


请告诉我如何配置它。谢谢。

本例中的解决方案是使用QTableView(自定义某些方面,如标题复选框):

导入系统 从PyQt5导入QtCore、QtGui、QtWidgets 类HeaderView(qtwidts.QHeaderView): 选中=QtCore.pyqtSignal(bool) def uuu init uuuu(自我、方向、父项=无): 超级() self.\u可检查\u列=-1 self.\u state=False self.\u列\u down=-1 @财产 def可检查_列(自身): 返回self.\u可检查\u列 @可检查的列设置器 def可检查_列(自身,c): self.\u可检查\u列=c @财产 def状态(自身): 返回自我状态 @状态设定器 def状态(自身,c): 如果self.checkable_列==-1: 返回 自身状态=c 自我检查。发射(c) self.updateSection(self.checkable_列) def paintSection(自我、画家、矩形、逻辑索引): 保存 super().paintSection(painter、rect、logicalIndex) 恢复 如果logicalIndex!=self.checkable_列: 返回 opt=QtWidgets.QStyleOptionButton() 复选框_rect=self.style().subElementRect( qtwidts.QStyle.SE_CheckBoxIndicator,opt,无 ) 复选框_rect.moveCenter(rect.center()) opt.rect=复选框\u rect opt.state=qtwidts.QStyle.state_已启用| qtwidts.QStyle.state_已激活 如果logicalIndex==self.\u列\u向下: opt.state |=qtwidts.QStyle.state|u凹陷 opt.state |=( 如果self.State else qtwidts.QStyle.State\u关闭,则qtwidts.QStyle.State\u打开 ) self.style().drawPrimitive(qtwidts.QStyle.PE_IndicatorCheckBox,opt,painter) def鼠标压力事件(自身、事件): super().mousePressEvent(事件) li=self.logicalIndex(event.pos()) self.\u column\u down=li self.updateSection(li) def mouseReleaseEvent(自身,事件): super().mouseReleaseEvent(事件) li=self.logicalIndex(event.pos()) self.\u列\u down=-1 如果li==self.checkable_列: self.state=非self.state 类对话框(QtWidgets.QDialog): def uuu init uuu(self,parent=None): super()。\uuuu init\uuuu(父级) self.model=QtGui.QStandardItemModel(0,4,self) self.model.setHorizontalHeaderLabels([“”,“名字”,“姓氏”,“公司]) 州、名、姓、公司名称( (没错,“拉里”、“埃里森”、“甲骨文”), (没错,“史蒂夫”、“乔布斯”、“苹果”), (没错,“史蒂夫”、“鲍尔默”、“微软”), (没错,“比尔”、“盖茨”、“微软”), ): it_state=QtGui.QStandardItem() it_state.setEditable(False) it_state.setCheckable(真) it_state.setCheckState(如果state else QtCore.Qt.UnChecked,则检查QtCore.Qt) it_firstname=QtGui.QStandardItem(firstname) it_lastname=QtGui.QStandardItem(lastname) it_company=QtGui.QStandardItem(company) self.model.appendRow([it\u state,it\u firstname,it\u lastname,it\u company]) self.view=qtwidts.QTableView( showGrid=False,selectionBehavior=QtWidgets.QAbstractItemView.SelectRows ) self.view.setModel(self.model) headerview=headerview(QtCore.Qt.Horizontal,self.view) headerview.checkable_列=0 headerview.checked.connect(self.change\u状态\u模型) self.view.setHorizontalHeader(headerview) self.view.verticalHeader().hide() self.view.horizontalHeader().setMinimumSectionSize(0) self.view.horizontalHeader().setSectionResizeMode( 0,qtwidts.QHeaderView.ResizeToContents ) self.view.horizontalHeader().setStretchLastSection(True) self.box=qtwidts.QDialogButtonBox( qtwidts.QDialogButtonBox.Ok |qtwidts.QDialogButtonBox.Cancel |qtwidts.QDialogButtonBox.NoButton |qtwidts.QDialogButtonBox.Help, QtCore.Qt.Vertical, ) hlay=qtwidts.QHBoxLayout(self) hlay.addWidget(self.view) hlay.addWidget(self.box) self.box.accepted.connect(self.accept) self.box.rejected.connect(self.rejected) self.box.helpRequested.connect(self.on\u helpRequested) 自我调整大小(500240) @QtCore.pyqtSlot() 请求帮助时的def(自我): qtwidts.QMessageBox.aboutQt(self) @QtCore.pyqtlot(bool) def更改模式的状态(自身、状态): 对于范围内的i(self.model.rowCount()): it=self.model.item(i) 如果不是“无”: it.setCheckState(如果状态为else,则检查QtCore.Qt.Unchecked) 如果名称=“\uuuuu main\uuuuuuuu”: app=qtwidts.QApplication(sys.argv) w=对话框() w、 show() sys.exit(app.exec_())

在标题中显示的图像(在“名字”的左侧)中有一个复选框,它的功能是什么?请详细说明。@eyllanesc此功能在桌面应用程序中非常流行,“名字”左侧的复选框表示我们要选择所有项目。