Tìm hiểu về QLineEdit trong PyQt6
Trong bài viết này, chúng ta sẽ được tìm hiểu cách sử dụng lớp QLineEdit để tạo ra một ô dữ liệu cho phép người dùng nhập liệu từ bàn phím.
Giới thiệu về QLineEdit
Trong PyQt, thành phần QLineEdit cho phép bạn tạo ra một ô để cho phép người dùng nhập dữ liệu. Tiêu biểu, các giao diện mở đầu của một phần mềm có sử dụng QLineEdit để nhập thông tin vào để kiểm tra.
Bạn thường sử dụng QLineEdit cùng với QLabel. Để tạo một QLineEdit, ta thực hiện theo các bước sau:
Đầu tiên, ta thêm lớp QLineEdit từ thư viện PyQt6.QtWidgets:
from PyQt6.QtWidgets import QLineEdit
Thứ hai, tạo một đối tượng là thể hiện của lớp QLineEdit, nó được cung cấp hai phương thức khởi tạo mà ta có thể tạo đối tượng từ lớp QLineEdit:
- QLineEdit(parent: QWidget = None): Khởi tạo một ô nhập liệu trống.
- QLineEdit(text: str, parent: QWidget = None): Khởi tạo một ô nhập liệu với một giá trị chuỗi mặc định
Ví dụ:
line_edit = QLineEdit('Default Value', self)
Bên cạnh đó, bạn cũng có thể sử dụng thêm những thuộc tính tuỳ chọn khác:
Thuộc tính | Kiểu dữ liệu | Mô tả |
---|---|---|
text | string | Nội dung của ô nhập liệu |
readOnly | Boolean | True hoặc False. Nếu True thì ô nhập liệu không thể chỉnh sửa |
clearButtonEnabled | Boolean | True để thêm nút ấn xoá nội dung |
placeholderText | string | Văn bản được hiển thị khi ô nhập liệu chưa được nhập dữ liệu |
maxLength | integer | Đặc tả kích thước tối đa số lượng các ký tự mà có thể nhập liệu |
echoMode | QLineEdit.EchoMode | Thay đổi cách hiển thị cũng như hiển thị. Ví dụ, password thì sẽ không nhìn thấy dữ liệu |
Ví dụ về cách sử dụng QLineEdit
Ví dụ đơn giản về QLineEdit
Quan sát vào chương trình mẫu dưới đây để thấy được cách tạo ra một QLineEdit:
import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QLineEdit, QVBoxLayout)
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# thuộc tính cơ bản của cửa sổ hiển thị
self.setWindowTitle('Ví dụ đơn giản về QLineEdit')
self.setGeometry(100, 100, 320, 210)
# tạo một QLineEdit
search_box = QLineEdit(self, placeholderText='Enter a keyword to search...', clearButtonEnabled=True)
# xác định vị trí của các thành phần
layout = QVBoxLayout()
layout.addWidget(search_box)
self.setLayout(layout)
# hiển thị cửa sổ
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Kết quả của chương trình trên như sau:
Ví dụ về QLineEdit để tạo ô nhập liệu chứa mật khẩu
Quan sát chương trình mẫu sau để biết cách tạo một ô nhập liệu mật khẩu:
import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QLineEdit, QVBoxLayout)
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# thông tin cơ bản cửa sổ
self.setWindowTitle('Ví dụ nhập mật khẩu bằng QLineEdit')
self.setGeometry(100, 100, 320, 210)
# tạo một QLineEdit
password = QLineEdit(self, echoMode=QLineEdit.EchoMode.Password)
# xác định vị trí gắn các thành phần
layout = QVBoxLayout()
layout.addWidget(password)
self.setLayout(layout)
# hiển thị cửa sổ
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Kết quả của chương trình trên là:
password = QLineEdit(self, echoMode=QLineEdit.EchoMode.Password)
Ví dụ tạo QLineEdit với dữ liệu được gợi ý nhập liệu
Để tạo một ô nhập liệu với các giá trị gợi ý văn bản, ta thực hiện theo các bước sau:
Đầu tiên, ta thêm lớp QLineEdit từ thư viện PyQt6.QtWidgets.
Thứ hai, tạo một QCompleter với một danh sách các văn bản mà bạn muốn gợi ý khi nhập liệu:
completer = QCompleter(word_list)
Thứ ba, tạo đối tượng QLineEdit và gọi phương thức setCompleter() để gắn danh sách văn bản gợi ý:
line_edit = QLineEdit(self)
line_edit.setCompleter(completer)
Quan sát ví dụ sau để biết cách tạo một ô nhập liệu có các văn bản gợi ý:
import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QLineEdit, QVBoxLayout, QCompleter)
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# thông tin cơ bản của cửa sổ
self.setWindowTitle('Nhập liệu có gợi ý với QLineEdit')
self.setGeometry(100, 100, 320, 210)
# danh sách các từ gợi ý
common_fruits = QCompleter([
'Apple',
'Apricot',
'Banana',
'Carambola',
'Olive',
'Oranges',
'Papaya',
'Peach',
'Pineapple',
'Pomegranate',
'Rambutan',
'Ramphal',
'Raspberries',
'Rose apple',
'Starfruit',
'Strawberries',
'Water apple',
])
# tạo QLineEdit
fruit = QLineEdit(self)
# gắn danh sách gợi ý vào QLineEdit
fruit.setCompleter(common_fruits)
# xác định vị trí các thành phần
layout = QVBoxLayout()
layout.addWidget(fruit)
self.setLayout(layout)
# hiển thị cửa sổ
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Và kết quả của chương trình trên như sau: