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.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng