Tìm hiểu về QPushButton trong PyQt6
Trong bài viết hướng dẫn này, bạn sẽ được tìm hiểu về cách sử dụng lớp QPushButton của thư viện PyQt6 để tạo một nút ấn.
Giới thiệu về QPushButton trong PyQt
Lớp QPushButton cho phép bạn khởi tạo ra một nút ấn, một sự kiện thông thường khi nhấn vào nút ấn thì một chức năng nào đó được thực hiện.
Để tạo ra một nút ấn, ta thực hiện theo các bước như sau:
Đầu tiên, ta thêm lớp QPushButton từ thư viện PyQt6.QtWidgets:
from PyQt6.QtWidgets import QPushButton
Thứ hai, ta gọi lớp QPushButton() để tạo ra một đối tượng như là một thể hiện của QPushButton, ta truyền vào một chuỗi ký tự để làm nhãn hiển thị trên nút ấn:
button = QPushButton("Nhấn vào tôi")
Thứ ba, ta lập trình để kết nối giữa sự kiện clicked với một hàm được thực thi:
button.clicked.connect(self.on_clicked)
Lưu ý: hàm on_clicked() là một hàm mà nó được thực hiện khi sự kiện nhấn vào nút ấn được kích hoạt.
Chương trình sau là một ví dụ minh chứng cho việc tạo một nút ấn trên cửa sổ chương trình:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('Ví dụ khởi tạo nút ấn')
self.setGeometry(100, 100, 320, 210)
# tạo một nút ấn
button = QPushButton('Nhấn vào đây')
# thiết lập vị trí các thành phần trên giao diện
layout = QVBoxLayout()
layout.addWidget(button)
self.setLayout(layout)
# hiển thị cửa sổ
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
# tạo một đối tượng thể hiện của cửa sổ chính
window = MainWindow()
# bắt đầu một vòng lặp sự kiện
sys.exit(app.exec())
Kết quả của chương trình trên như sau:
Tạo nút ấn với biểu tượng icon
Để tạo một nút ấn với một icon, ta thực hiện theo các bước sau:
Đầu tiên, ta thêm lớp QIcon từ thư viện PyQt6.QtGui:
from PyQt6.QtGui import QIcon
Thứ hai, tạo một đối tượng như là một thể hiện của QPushButton:
button = QPushButton('Thêm')
Thứ ba, thêm icon vào nút ấn bằng cách gọi đến phương thức setIcon() của lớp QPushButton với một đối tượng từ lớp QIcon:
button.setIcon(QIcon('plus.png'))
Lưu ý: ta truyền vào một đường dẫn đến nơi lưu trữ icon để sinh ra đối tượng thể hiện của lớp QIcon.
Để nút ấn được tương thích với giao diện hơn, ta có thể thiết lập về kích thước của nút ấn bằng cách gọi đến phương thức setFixedSize().
Kích thước của nút ấn được xác định bởi đối tượng sinh ra từ lớp QSize với hai đối số được truyền vào là sự thể hiện của width và height. Để làm được điều đó, ta cần thêm vào lớp Qsize từ lớp PyQt6.QtCore.
Chương trình dưới đây nhằm hiển thị ra một nút ấn với một icon:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt6.QtCore import QSize
from PyQt6.QtGui import QIcon
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('Ví dụ thêm icon vào nút ấn')
self.setGeometry(100, 100, 320, 210)
# tạo nút ấn
button = QPushButton('Thêm')
# thêm icon vào nút ấn
button.setIcon(QIcon('plus.png'))
# thiết lập kích thước của nút ấn
button.setFixedSize(QSize(100, 30))
# thiết lập bố cục trên giao diện
layout = QVBoxLayout()
layout.addWidget(button)
self.setLayout(layout)
# hiển thị giao diện
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
# khởi tạo đối tượng của sổ
window = MainWindow()
# bắt đầu vòng lặp sự kiện
sys.exit(app.exec())
Kết quả của chương trình trên như sau:
Tạo một kết nối đến một hàm
Lớp QPushButton có thuộc tính checkable mà ở đó cho phép bạn sử dụng nút ấn như một trạng thái kiểm tra có thực hiện chức năng nào đó hay không.
Trạng thái chuyển đổi sẽ có hai trạng thái: on hoặc off. Nếu nhấn vào nút ấn thì trạng thái xác định đã nhấn hay chưa sẽ là true. Ngược lại sẽ là false.
Chương trình sau đây là ví dụ cho việc kết nối sự kiện nhấn nút ấn để thực hiện chức năng nào đó:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt6.QtCore import QSize
from PyQt6.QtGui import QIcon
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('Ví dụ thêm icon vào nút ấn')
self.setGeometry(100, 100, 320, 210)
# tạo nút ấn
button = QPushButton('Thêm')
# thêm icon vào nút ấn
button.setIcon(QIcon('plus.png'))
# thiết lập kích thước của nút ấn
button.setFixedSize(QSize(100, 30))
button.setCheckable(True)
button.clicked.connect(self.hien_thi)
# thiết lập bố cục trên giao diện
layout = QVBoxLayout()
layout.addWidget(button)
self.setLayout(layout)
# hiển thị giao diện
self.show()
# hàm hiển thị thông báo đã nhấn vào nút ấn
def hien_thi(self, checked):
print(checked)
if __name__ == '__main__':
app = QApplication(sys.argv)
# khởi tạo đối tượng của sổ
window = MainWindow()
# bắt đầu vòng lặp sự kiện
sys.exit(app.exec())
Kết quả chương trình trên là: