PySide:如何同时输入输入掩码和放置持有者文本

时间:2017-06-15 21:13:50

标签: python pyqt pyside qlineedit

我试图制作一个lineEdit小部件,当不在焦点上并且有输入屏蔽时(看起来像' /看起来像' MM / DD / YYYY') /',或者你可以通过其他方式插入斜杠)。

目前输入掩码<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id="mySelect"> <option>Choose a fruit</option> <option>Apple</option> <option>Pear</option> <option>Banana</option> <option>Orange</option> </select>优先,我无法找到在LineEdit小部件上放置hasFocus(或类似)信号的方法。

您如何在一个小部件中实现这两个功能? 是否更容易保留占位符文本并创建一个在输入一定数量的字符后加斜杠的方法?

此外,设置遮罩时,轻拂的光标非常粗。该怎么做以及如何还原呢?

完整代码:

setInputMask('99/99/9999')

1 个答案:

答案 0 :(得分:1)

如果您想要一个小部件的自定义行为,您必须创建一个继承自此的类,在您的QLineEdit的情况下。要获得特定目标,必须使用focusInEvent和focusOutEvent方法,如以下部分所述:

class LineEdit(QtGui.QLineEdit):
    def __init__(self, parent=None):
        QtGui.QLineEdit.__init__(self, parent=parent)
        self.setPlaceholderText('MM/DD/YYYY')

    def focusInEvent(self, event):
        self.setInputMask('99/99/9999')

    def focusOutEvent(self, event):
        self.setInputMask('')

然后你应该改为:

self.lineEdit = QtGui.QLineEdit(self.centralwidget)

为:

self.lineEdit = LineEdit(self.centralwidget)