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 Button từ QPushButton

Tạo Button từ QPushButton

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:

Thêm icon vào Button

Thêm icon vào Button

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à:

Kết nối giữa nút ấn với hàm

Kết nối giữa nút ấn với hàm

Source code mẫu QPushButton

Có thể bạn sẽ thích…

Trả lời