Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách sử dụng lớp PyQt QRadioButton
Trong bài viết này, bạn sẽ tìm hiểu cách sử dụng lớp PyQt QRadioButton
để tạo các nút radio (radio buttons) trong ứng dụng giao diện đồ họa. Nút radio là một loại widget quan trọng trong các ứng dụng GUI, cho phép người dùng lựa chọn một trong nhiều tùy chọn có sẵn. Qua các ví dụ minh họa, bạn sẽ học cách tạo, quản lý, và tương tác với các nút radio trong PyQt, giúp cải thiện trải nghiệm người dùng và tính năng của ứng dụng.
Giới thiệu về PyQt QRadioButton
Lớp QRadioButton
cho phép bạn tạo một nút radio có nhãn:
QRadioButton(text[, parent=None])
Một nút radio có hai trạng thái:
- Bật (được chọn)
- Tắt (không được chọn)
Thông thường, bạn sử dụng các nút radio trong một nhóm. Một nhóm nút radio cho phép bạn chọn một trong nhiều tùy chọn.
Bài viết này được đăng tại [free tuts .net]
Trong một nhóm nút radio, bạn chỉ có thể chọn một nút radio tại một thời điểm. Nếu bạn chọn một nút radio khác, nút trước đó sẽ tự động bỏ chọn.
Mặc định, các nút radio là tự động độc quyền (auto-exclusive). Ngoài ra, các nút radio thuộc cùng một widget cha cũng là tự động độc quyền.
Nếu bạn muốn tạo nhiều nhóm nút radio độc quyền, bạn có thể nhóm chúng vào nhiều widget QButtonGroup
khác nhau.
Một nút radio phát ra tín hiệu toggled()
khi nó được bật hoặc tắt.
Nếu bạn muốn thực hiện một hành động khi trạng thái của nút radio thay đổi, bạn có thể kết nối một slot (hàm xử lý tín hiệu) với tín hiệu toggled()
.
Trong slot đó, bạn có thể sử dụng phương thức isChecked()
để kiểm tra xem nút radio đang bật hay tắt.
Ví dụ về PyQt QRadioButton
Chương trình sau đây minh họa cách tạo một nhóm nút radio:
import sys from PyQt6.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout class MainWindow(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('PyQt QRadioButton') self.setMinimumWidth(300) # tạo layout dọc layout = QVBoxLayout() self.setLayout(layout) # tạo nhãn chỉ dẫn label = QLabel('Vui lòng chọn một nền tảng:', self) # tạo các nút radio rb_android = QRadioButton('Android', self) rb_android.toggled.connect(self.update) rb_ios = QRadioButton('iOS', self) rb_ios.toggled.connect(self.update) rb_windows = QRadioButton('Windows', self) rb_windows.toggled.connect(self.update) # tạo nhãn kết quả self.result_label = QLabel('', self) # thêm các widget vào layout layout.addWidget(label) layout.addWidget(rb_android) layout.addWidget(rb_ios) layout.addWidget(rb_windows) layout.addWidget(self.result_label) # hiển thị cửa sổ self.show() def update(self): # lấy nút radio gửi tín hiệu rb = self.sender() # kiểm tra nếu nút radio đang được chọn if rb.isChecked(): self.result_label.setText(f'Bạn đã chọn {rb.text()}') if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())
Kết quả:
Khi chạy chương trình, cửa sổ sẽ hiển thị ba nút radio cho phép bạn chọn một trong các nền tảng Android, iOS, hoặc Windows. Khi bạn chọn một nền tảng, nhãn kết quả sẽ cập nhật để hiển thị lựa chọn của bạn.
Cách hoạt động
Tạo ba nút radio và kết nối phương thức update
với tín hiệu toggled()
của mỗi nút:
rb_android = QRadioButton('Android', self) rb_android.toggled.connect(self.update) rb_ios = QRadioButton('iOS', self) rb_ios.toggled.connect(self.update) rb_windows = QRadioButton('Windows', self) rb_windows.toggled.connect(self.update)
Tạo nhãn kết quả để hiển thị nút radio nào đang được chọn:
self.result_label = QLabel('', self)
Vì cần sử dụng result_label
trong các phương thức khác, chúng ta tạo nó như một thuộc tính của lớp.
Định nghĩa phương thức update()
:
def update(self): # lấy nút radio gửi tín hiệu rb = self.sender() # kiểm tra nếu nút radio đang được chọn if rb.isChecked(): self.result_label.setText(f'Bạn đã chọn {rb.text()}')
Trong phương thức update()
:
- Lấy nút radio đã gửi tín hiệu
toggled
. - Kiểm tra xem nút radio có được chọn không bằng cách gọi phương thức
isChecked()
. - Cập nhật nhãn kết quả với lựa chọn hiện tại.