我什么时候做

resos = [_ui.ComboBox.itemText(i) for i in range(_ui.ComboBox.count())]


它给我的清单

[PyQt4.QtCore.QString(u'1280x720 from 1.316'),
PyQt4.QtCore.QString(u'1920x1080 from 1.316'),]


如何覆盖ComboBox的itemText方法,使其仅返回python字符串?而不是在上面的列表理解中进行字符串转换!

最佳答案

您可以将QComboBox子类化:

class MyComboBox(QtGui.QComboBox):
    def itemText(self, index):
        return str(super(MyComboBox, self).itemText(index))


但是请注意,如果您的组合框包含非Ascii字符,则可能会遇到麻烦。

或者,您可以尝试修补猴子,但这很丑陋:

def foo(combo):
    def wrapper(index):
        return str(QtGui.QComboBox.itemText(combo, index))
    return wrapper

_ui.ComboBox.itemText = foo(_ui.ComboBox)

关于python - 如何重写Pyqt组合框ItemText方法,以便它返回默认的python字符串而不是QString?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30047328/

10-12 18:57