gpt4 book ai didi

python - QComboBox 和 app.setStyle ("cleanlooks")

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:45 31 4
gpt4 key购买 nike

下面的代码创建了一个QComboBox,并分配了QAbstractTableModel模型。奇怪的是,如果 app.setStyle("cleanlooks") 被注释掉,QCombo 在单击时不会下拉菜单。有什么建议为什么会这样吗?

enter image description here

from PyQt import QtGui, QtCore
class tableModel(QtCore.QAbstractTableModel):
def __init__(self, parent=None, *args):
QtCore.QAbstractTableModel.__init__(self, parent, *args)
self.items = [['Item_A000', '10'],['Item_B001', '20'],['Item_A002', '30'],['Item_B003', '40'],['Item_B004', '50']]

def rowCount(self, parent=QtCore.QModelIndex()):
return len(self.items)
def columnCount(self, parent=QtCore.QModelIndex()):
return 2

def data(self, index, role):
if not index.isValid(): return
row=index.row()
column=index.column()
return self.items[row][column]

if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
# app.setStyle("cleanlooks")

tModel=tableModel()

combobox = QtGui.QComboBox()
combobox.setModel(tModel)
combobox.show()

sys.exit(app.exec_())

最佳答案

在 linux (ubuntu 14.04 lts) 上,您的代码在这两种情况下都有效。在我的 Windows 7 上它在任何情况下都不起作用,即使 app.setStyle("cleanlooks") 没有被注释掉。

由于 QCombobox 只呈现一维列表而没有二维表,我想问题是由二维表模型或其索引引起的。

我尝试了 QstandardItemModel,它可以在 Linux 和 Windows 7 上运行。它允许通过用户角色访问项目中的更多列,添加第三列以显示它。

class tableModel(QtGui.QStandardItemModel):
def __init__(self, parent=None, *args):
QtGui.QStandardItemModel.__init__(self, parent, *args)
self.items = [['Item_A000', '10','abcd'],['Item_B001', '20','efgh'],['Item_A002', '30','ijkl'],['Item_B003', '40','mnop'],['Item_B004', '50','qrst']]
for i in range(0,len(self.items)):
item = QtGui.QStandardItem()
item.setData(self.items[i][0],2) # displayrole
item.setData(self.items[i][1],256) # userrole
item.setData(self.items[i][2],257) # userrole
self.appendRow(item)

def currentChanged(self, index):
print('itemdata[0] :', self.data(self.index(index,0),2), '; itemdata[1] :', self.data(self.index(index,0), 256), '; itemdata[2]: ', self.data(self.index(index,0),257))


if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
# app.setStyle("cleanlooks")
tModel=tableModel()
combobox = QtGui.QComboBox() # widget)
combobox.setModel(tModel
combobox.currentIndexChanged.connect(combobox.model().currentChanged)
combobox.show()

sys.exit(app.exec_())

关于python - QComboBox 和 app.setStyle ("cleanlooks"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31998023/

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