PyQt - 继承问题

时间:2013-07-19 19:38:27

标签: python qt class inheritance pyqt

我在这个奇怪的问题上遇到了困难。我在我的项目中放了一些QLineEdit小部件,并尝试通过单击它们来选择(突出显示)所有文本。我已经有了这个工作,但后来我想将这个功能扩展到同一个QLineEdit父级的另一个类。我做了这个小界面:

class EditInterface(QtGui.QLineEdit):
    def __init__(self, parent):
        super(EditInterface, self).__init__(parent)
        self.focus = False
        self.setFocusPolicy(QtCore.Qt.StrongFocus)

    def mousePressEvent(self, event):
        ret = QtGui.QLineEdit.mousePressEvent(self, event)
        if not self.focus:
            self.selectAll()
            self.focus=True
        else:
            self.deselect()
        return ret

    def focusInEvent(self,event):
        self.focus=True
        return QtGui.QLineEdit.focusInEvent(self,event)

    def focusOutEvent(self,event):
        self.focus=False
        return QtGui.QLineEdit.focusOutEvent(self,event)

现在它根本不起作用。如果我只是这样做:

def mousePressEvent(self, event):
    ret = QtGui.QLineEdit.mousePressEvent(self, event)
    self.selectAll()
    return ret

然后它工作正常,但我希望它能够启用其他鼠标活动而不是一遍又一遍地选择所有内容。 问题似乎与self.focus变量有关,但我在python中没有经验,也不知道发生了什么。其他一切在我的项目中运作良好,所以我将跳过它在这里发布。 提前致谢

编辑:我发现了问题 它不是关于继承,而是关于事件。在mousePressEvent之前调用focusInEvent,因此无法调用selectAll()。

0 个答案:

没有答案