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 QMessageBox để tạo một hộp thoại
Trong bài viết này, bạn sẽ học cách sử dụng lớp PyQt QMessageBox
để tạo ra các hộp thoại dạng modal, giúp thông báo cho người dùng về thông tin quan trọng hoặc yêu cầu họ đưa ra quyết định. QMessageBox
là một công cụ hữu ích trong việc hiển thị các thông báo như cảnh báo, câu hỏi, thông tin hoặc lỗi nghiêm trọng, từ đó giúp cải thiện trải nghiệm người dùng trong ứng dụng của bạn.
Giới thiệu về lớp PyQt QMessageBox
Lớp QMessageBox
cho phép bạn tạo một hộp thoại dạng modal để cảnh báo người dùng với thông tin quan trọng hoặc hỏi họ một câu hỏi và nhận lại câu trả lời.
QMessageBox
cung cấp một số phương thức hữu ích để hiển thị các loại thông báo khác nhau:
information()
– hiển thị thông báo thông tin.question()
– đặt câu hỏi cho người dùng và nhận câu trả lời.warning()
– hiển thị cảnh báo.critical()
– hiển thị thông tin quan trọng.
Ví dụ về PyQt QMessageBox
Chương trình dưới đây hiển thị một cửa sổ với bốn nút, mỗi khi nhấp vào một nút sẽ hiển thị một thông báo tương ứng:
Bài viết này được đăng tại [free tuts .net]
import sys from PyQt6.QtWidgets import QApplication, QMessageBox, QWidget, QHBoxLayout, QPushButton class MainWindow(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('PyQt QMessageBox') self.setGeometry(100, 100, 300, 100) layout = QHBoxLayout() self.setLayout(layout) btn_question = QPushButton('Question') btn_question.clicked.connect(self.question) btn_info = QPushButton('Information') btn_info.clicked.connect(self.info) btn_warning = QPushButton('Warning') btn_warning.clicked.connect(self.warning) btn_critical = QPushButton('Critical') btn_critical.clicked.connect(self.critical) layout.addWidget(btn_question) layout.addWidget(btn_info) layout.addWidget(btn_warning) layout.addWidget(btn_critical) self.show() def info(self): QMessageBox.information(self, 'Information', 'Đây là thông tin quan trọng.') def warning(self): QMessageBox.warning(self, 'Warning', 'Đây là thông báo cảnh báo.') def critical(self): QMessageBox.critical(self, 'Critical', 'Đây là thông báo nghiêm trọng.') def question(self): answer = QMessageBox.question(self, 'Xác nhận', 'Bạn có muốn thoát không?', QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No) if answer == QMessageBox.StandardButton.Yes: QMessageBox.information(self, 'Thông tin', 'Bạn đã chọn Yes. Chương trình sẽ kết thúc.', QMessageBox.StandardButton.Ok) self.close() else: QMessageBox.information(self, 'Thông tin', 'Bạn đã chọn No.', QMessageBox.StandardButton.Ok) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())
Cách hoạt động
- Phương thức
question()
hiển thị một hộp thoại với câu hỏi yêu cầu người dùng chọnYes
hoặcNo
:
answer = QMessageBox.question(self, 'Xác nhận', 'Bạn có muốn thoát không?', QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No)
Để biết người dùng đã nhấn nút nào, bạn so sánh giá trị trả về từ question()
với các giá trị Yes
và No
:
if answer == QMessageBox.StandardButton.Yes: QMessageBox.information(self, 'Thông tin', 'Bạn đã chọn Yes. Chương trình sẽ kết thúc.', QMessageBox.StandardButton.Ok) self.close() else: QMessageBox.information(self, 'Thông tin', 'Bạn đã chọn No.', QMessageBox.StandardButton.Ok)
Phương thức information()
hiển thị một hộp thoại với thông tin, nhận các tham số như widget cha, tiêu đề của hộp thoại và thông điệp cần hiển thị:
QMessageBox.information(self, 'Information', 'Đây là thông tin quan trọng.')
Phương thức warning()
hiển thị thông báo cảnh báo với biểu tượng cảnh báo:
QMessageBox.warning(self, 'Warning', 'Đây là thông báo cảnh báo.')
Phương thức critical()
hiển thị thông báo nghiêm trọng với biểu tượng dừng lại:
QMessageBox.critical(self, 'Critical', 'Đây là thông báo nghiêm trọng.')
Kết bài
Sử dụng lớp QMessageBox
giúp bạn dễ dàng tạo các hộp thoại dạng modal để hiển thị thông báo quan trọng hoặc yêu cầu người dùng đưa ra quyết định. Với các phương thức như information()
, question()
, warning()
, và critical()
, bạn có thể xử lý nhiều tình huống khác nhau trong ứng dụng, nâng cao tính tương tác và trải nghiệm người dùng một cách hiệu quả và chuyên nghiệp.