1 - The QLineEdit class
The PyQt5 library is equipped with the QLineEdit class which allows you to create input fields with a single line. QLineEdit comes with a useful collection of editing functions, including undo and redo, cut and paste, and drag and drop. This is the basic PyQt5 widget to receive keyboard input, the input can also be text, numbers or even a symbol.
2 - Associated methods with the QLineEdit class
- setAlignment(): aligns the text: Qt.AlignLeft, Qt.AlignRight, Qt.AlignCenter, Qt.AlignJustify
- clear(): erases the contents
- setEchoMode(): controls the text appearance: QLineEdit.Normal, QLineEdit.NoEcho, QLineEdit.Password, QLineEdit.PasswordEchoOnEdit
- setMaxLength(): sets the maximum number of characters for input
- setReadOnly(): makes the text box non-editable
- setText(): assign a text to the QLineEdit
- text(): retrieves text in the the QLineEdit field
- setValidator(): sets the validation rules. Available validators are: QIntValidator − Restricts input to integer, QDoubleValidator − Fraction part of number limited to specified decimals, QRegexpValidator − Checks input against a Regex expression
- setInputMask(): applies mask of combination of characters for input
- setFont(): displays the contents QFont object
Associated signals
- cursorPositionChanged(): whenever the cursor moves
- editingFinished(): when you press 'Enter' or the field loses focus
- returnPressed(): when you press 'Enter'
- selectionChanged(): whenever the selected text changes
- textChanged(): as text in the box changes either by input or by programmatic means
- textEdited(): whenever the text is edited
To create a QLineEdit control, just import and instantiate the QLineEdit class:
import sys
from PyQt5.QtWidgets import QApplication , QWidget, QLineEdit
app = QApplication(sys.argv)
win = QWidget()
win.setWindowTitle("Example of QLineEdit")
win.setGeometry(100 , 100 , 400 , 300)
# create a QLineEdit
qLine = QLineEdit(win)
qLine.setGeometry(50, 100 , 200 , 50)
win.show()
sys.exit(app.exec_())
2 - Apply a style to a QLineEdit control
QLineEdit has the setStyleSheet() method which allows you to associate a Qt Style Sheet (QSS) style
Example
qLine.setStyleSheet("background: black; color: yellow; font-size:28px;")
3 - QLineEdit according to the object approach
import sys
from PyQt5.QtWidgets import QApplication , QWidget, QLineEdit
class MyWindow(QWidget):
def __init__(self , win):
super().__init__()
self.win = win
def build(self):
self.win.setWindowTitle("QLineEdit Exemple")
self.win.setGeometry(100 , 100 , 500 , 300)
# create a QLineEdit
self.qLine = QLineEdit(self.win)
self.qLine.setGeometry(50 , 50 , 250 , 35)
if __name__ == '__main__':
app = QApplication(sys.argv)
root = QWidget()
mywin = MyWindow(root)
mywin.build()
root.show()
sys.exit(app.exec_())
4 - Bind an action to the QLineEdit
Now we can bind an action to the QLineEdit that displays the text entered in the QLinEdit field. This action can be associated with the textChanged() method:
import sys
from PyQt5.QtWidgets import QApplication, QLabel , QWidget, QLineEdit
class MyWindow(QWidget):
def __init__(self , win):
super().__init__()
self.win = win
def action(self):
text = self.qLine.text()
self.qLabel.setText(text)
def build(self):
self.win.setWindowTitle("QLineEdit Exemple")
self.win.setGeometry(100 , 100 , 400 , 200)
# create a QLineEdit
self.qLine = QLineEdit(self.win)
self.qLine.setGeometry(50 , 50 , 250 , 35)
# add action to the QLineEdit
self.qLine.textChanged.connect(self.action)
# creat a QLabel that display the result
self.qLabel = QLabel('display result here !' , self.win)
self.qLabel.setGeometry(50 , 100 , 250 , 35)
if __name__ == '__main__':
app = QApplication(sys.argv)
root = QWidget()
mywin = MyWindow(root)
mywin.build()
root.show()
sys.exit(app.exec_())
my-courses.net