Скажем, у вашего Qt Designer ui есть главное окно под названием «MainWindow» и кнопка «buttonDelete».
Первый шаг заключается в создании вашего основного класса окна и подключить щелкнул сигнал кнопки на обработчике:
from PyQt4 import QtCore, QtGui
from mainwindow_ui import Ui_MainWindow
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setupUi(self)
self.buttonDelete.clicked.connect(self.handleButtonDelete)
Далее вам нужно добавить метод к MainWindow
класса, который обрабатывает сигнал и открывается диалог:
def handleButtonDelete(self):
answer = QtGui.QMessageBox.question(
self, 'Delete Item', 'Are you sure you want to delete this item?',
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No |
QtGui.QMessageBox.Cancel,
QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.Yes:
# code to delete the item
print('Yes')
elif answer == QtGui.QMessageBox.No:
# code to carry on without deleting
print('No')
else:
# code to abort the whole operation
print('Cancel')
при этом используется один из встроенных в QMessageBox functions, чтобы создать диалоговое окно. Первые три аргумента задают родительский элемент, заголовок и текст. Следующие два аргумента задают группу отображаемых кнопок плюс кнопку по умолчанию (тот, который изначально выделен). Если вы хотите использовать разные кнопки, доступные можно найти here.
Чтобы завершить пример, вам просто нужно немного кода, чтобы запустить приложение и открыть окно:
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Я имею эту ошибку, когда я пишу сценарий: диалоговое = QtGui.QMessageBox.information (сам .tableViewPatient, «Удалить?», «Вы уверены, что хотите удалить этот элемент?», кнопки = QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel) TypeError: аргументы не соответствуют перегруженному вызову: QMessageBox.information (QWidget, QString, QString, QMessageBox.StandardButtons buttons = QMessageBox.Ok, QMessageBox.StandardButton defaultButton = QMessageBox.NoButton): аргумент 1 неожиданно type 'PySide.QtGui.QTableView' Я думаю, это может быть ошибка от себя? (не уверен) Можете ли вы по-прежнему помогать мне в этом? – user3369214