Вы хотите добавить интерактивные всплывающие окна с опциями «Да» и «Нет» в свое приложение PyQt? Не смотрите дальше! В этой статье блога мы углубимся в различные методы создания всплывающих окон «Да/Нет» с использованием PyQt в Python. Мы будем вести себя непринужденно и по ходу дела будем приводить примеры кода, которые помогут вам лучше понять концепции.
Метод 1: использование QMessageBox
Самый простой способ создать всплывающее окно «Да/Нет» в PyQt — использовать встроенный класс QMessageBox
. Вот простой пример:
from PyQt5.QtWidgets import QApplication, QMessageBox
app = QApplication([])
result = QMessageBox.question(None, "Confirmation", "Are you sure?", QMessageBox.Yes | QMessageBox.No)
if result == QMessageBox.Yes:
print("User clicked Yes")
else:
print("User clicked No")
app.exec_()
Метод 2. Пользовательское диалоговое окно с кнопками
Если вы предпочитаете более индивидуальный подход, вы можете создать собственное диалоговое окно с кнопками. Вот пример:
from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel, QPushButton
app = QApplication([])
class YesNoDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("Confirmation")
layout = QVBoxLayout()
layout.addWidget(QLabel("Are you sure?"))
yes_button = QPushButton("Yes")
yes_button.clicked.connect(self.on_yes_clicked)
layout.addWidget(yes_button)
no_button = QPushButton("No")
no_button.clicked.connect(self.on_no_clicked)
layout.addWidget(no_button)
self.setLayout(layout)
def on_yes_clicked(self):
print("User clicked Yes")
self.accept()
def on_no_clicked(self):
print("User clicked No")
self.reject()
dialog = YesNoDialog()
result = dialog.exec_()
if result == QDialog.Accepted:
print("Dialog accepted")
else:
print("Dialog rejected")
app.exec_()
Метод 3: Сигналы и слоты
Для более продвинутого подхода вы можете использовать сигналы и слоты для обработки выбора пользователя. Вот пример:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton
from PyQt5.QtCore import pyqtSignal
app = QApplication([])
class YesNoWidget(QWidget):
yes_clicked = pyqtSignal()
no_clicked = pyqtSignal()
def __init__(self, parent=None):
super().__init__(parent)
layout = QVBoxLayout()
layout.addWidget(QLabel("Are you sure?"))
yes_button = QPushButton("Yes")
yes_button.clicked.connect(self.yes_clicked.emit)
layout.addWidget(yes_button)
no_button = QPushButton("No")
no_button.clicked.connect(self.no_clicked.emit)
layout.addWidget(no_button)
self.setLayout(layout)
widget = YesNoWidget()
def on_yes_clicked():
print("User clicked Yes")
def on_no_clicked():
print("User clicked No")
widget.yes_clicked.connect(on_yes_clicked)
widget.no_clicked.connect(on_no_clicked)
widget.show()
app.exec_()
Заключение
В этой статье мы рассмотрели три различных метода создания всплывающих окон «Да/Нет» в PyQt с использованием Python. Мы начали с простого класса QMessageBox
, перешли к созданию пользовательского диалога и, наконец, использовали сигналы и слоты для большей гибкости. Выберите метод, который лучше всего соответствует вашим потребностям, и улучшите взаимодействие с пользователем в ваших приложениях PyQt!
Реализуя эти всплывающие окна «Да/Нет» в своем приложении PyQt, вы можете обеспечить лучший пользовательский опыт, позволяя пользователям принимать обоснованные решения. Так что вперед и начинайте интегрировать эти методы в свои проекты!