gpt4 book ai didi

python - PyQt:如何在选择项目时保持 ComboBox 打开

转载 作者:行者123 更新时间:2023-11-28 17:29:07 29 4
gpt4 key购买 nike

按照以下链接提供的解决方案(效果很好):

PyQt: How to set Combobox Items be Checkable?

如何在选择项目时让 ComboBox 保持打开状态?目前,使用提供的解决方案,在每次选择时,列表都会折叠...

最佳答案

以下是保持列表打开的链接解决方案的修订版。单击列表外部或按 Esc 可以关闭列表。

from PyQt4 import QtCore, QtGui

class CheckableComboBox(QtGui.QComboBox):
def __init__(self, parent=None):
super(CheckableComboBox, self).__init__(parent)
self.view().pressed.connect(self.handleItemPressed)
self._changed = False

def handleItemPressed(self, index):
item = self.model().itemFromIndex(index)
if item.checkState() == QtCore.Qt.Checked:
item.setCheckState(QtCore.Qt.Unchecked)
else:
item.setCheckState(QtCore.Qt.Checked)
self._changed = True

def hidePopup(self):
if not self._changed:
super(CheckableComboBox, self).hidePopup()
self._changed = False

def itemChecked(self, index):
item = self.model().item(index, self.modelColumn())
return item.checkState() == QtCore.Qt.Checked

def setItemChecked(self, index, checked=True):
item = self.model().item(index, self.modelColumn())
if checked:
item.setCheckState(QtCore.Qt.Checked)
else:
item.setCheckState(QtCore.Qt.Unchecked)

class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
self.combo = CheckableComboBox(self)
for index in range(6):
self.combo.addItem('Item %d' % index)
self.combo.setItemChecked(index, False)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.combo)

if __name__ == '__main__':

import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(500, 300, 200, 100)
window.show()
sys.exit(app.exec_())

关于python - PyQt:如何在选择项目时保持 ComboBox 打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35826492/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com