PyQt4 复选框在 Mac OS 上未显示(但可点击),在 Windows 上工作正常
PyQt4 checkboxes are not showing (but clickable) on Mac OS, on Windows it works fine
我正在为我的学士论文使用 PyQt4 创建一个 GUI。我有一个 QComboBox,其中每个项目都是一个复选框。这是我的代码:
构造函数中的某处:
self.multi = QtGui.QComboBox(self)
self.multi.setEnabled(True)
self.multi.view().pressed.connect(self.handleItemPressed)
在这里,我用我的复选框填充 QComboBox:
def fillMultiCombo(self):
# len(self.featureNames) rows, 1 column
model = QtGui.QStandardItemModel(len(self.featureNames), 1)
firstItem = QtGui.QStandardItem("feature(s)")
firstItem.setBackground(QtGui.QBrush(QtGui.QColor(200, 200, 200)))
firstItem.setSelectable(False)
model.setItem(0, 0, firstItem)
for i,query in enumerate(self.featureNames):
item = QtGui.QStandardItem(query)
item.setFlags(QtCore.Qt.ItemIsEnabled)
item.setData(QtCore.Qt.Unchecked, QtCore.Qt.CheckStateRole)
model.setItem(i+1, 0, item)
self.multi.setModel(model)
提前声明:我认为这不是代码问题,但我提供了一些代码以使其更清楚。
现在的问题是:在 Windows 7(在 2 台不同的机器上)一切正常。但是在我导师的机器上(Macbook Pro,我不知道哪个 OS 对不起),复选框没有显示(但没有打印错误或警告),但是当你点击它时,复选框被选中。所以就像复选框在那里并且起作用,但它是不可见的。
这是错误、机器相关问题还是其他问题。因为所有其他事情在她的机器上运行起来都非常顺利。
找了好久终于找到问题了。这是重要的代码片段:
app = QtGui.QApplication(sys.argv)
# Available styles (depending on the OS) for my ThinkPad:
# Windows
# WindowsXP
# WindowsVista
# Motif
# CDE
# Plastique
# Cleanlooks
# makes the split bar visible
app.setStyle(QtGui.QStyleFactory.create('Plastique'))
所以在我为我的应用程序设置样式之前,Qt 根据平台选择了最合适的样式。 OS。所以 Qt 为我的机器选择的默认样式有效,并且通常会显示复选框。 Qt 从我的导师那里为机器上的应用程序选择的默认样式是不一样的。事实上,如果我从 'Plastique' 更改为 'Cleanlooks',我的复选框也会消失。
我正在为我的学士论文使用 PyQt4 创建一个 GUI。我有一个 QComboBox,其中每个项目都是一个复选框。这是我的代码:
构造函数中的某处:
self.multi = QtGui.QComboBox(self)
self.multi.setEnabled(True)
self.multi.view().pressed.connect(self.handleItemPressed)
在这里,我用我的复选框填充 QComboBox:
def fillMultiCombo(self):
# len(self.featureNames) rows, 1 column
model = QtGui.QStandardItemModel(len(self.featureNames), 1)
firstItem = QtGui.QStandardItem("feature(s)")
firstItem.setBackground(QtGui.QBrush(QtGui.QColor(200, 200, 200)))
firstItem.setSelectable(False)
model.setItem(0, 0, firstItem)
for i,query in enumerate(self.featureNames):
item = QtGui.QStandardItem(query)
item.setFlags(QtCore.Qt.ItemIsEnabled)
item.setData(QtCore.Qt.Unchecked, QtCore.Qt.CheckStateRole)
model.setItem(i+1, 0, item)
self.multi.setModel(model)
提前声明:我认为这不是代码问题,但我提供了一些代码以使其更清楚。 现在的问题是:在 Windows 7(在 2 台不同的机器上)一切正常。但是在我导师的机器上(Macbook Pro,我不知道哪个 OS 对不起),复选框没有显示(但没有打印错误或警告),但是当你点击它时,复选框被选中。所以就像复选框在那里并且起作用,但它是不可见的。
这是错误、机器相关问题还是其他问题。因为所有其他事情在她的机器上运行起来都非常顺利。
找了好久终于找到问题了。这是重要的代码片段:
app = QtGui.QApplication(sys.argv)
# Available styles (depending on the OS) for my ThinkPad:
# Windows
# WindowsXP
# WindowsVista
# Motif
# CDE
# Plastique
# Cleanlooks
# makes the split bar visible
app.setStyle(QtGui.QStyleFactory.create('Plastique'))
所以在我为我的应用程序设置样式之前,Qt 根据平台选择了最合适的样式。 OS。所以 Qt 为我的机器选择的默认样式有效,并且通常会显示复选框。 Qt 从我的导师那里为机器上的应用程序选择的默认样式是不一样的。事实上,如果我从 'Plastique' 更改为 'Cleanlooks',我的复选框也会消失。