我想在通过AcceptRole返回之前在QMessageBox子类中启动一个进程。我不清楚为什么以下不起作用:
class Question(QtGui.QMessageBox):
def __init__(self, text):
QtGui.QMessageBox.__init__(self, QtGui.QMessageBox.Question,
"title", text, buttons=QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
self.text = text
def accept(self):
# run opertation
print self.text
QtGui.QMessageBox.accept(self)
dial = Question("text")
dial.exec_()
由于QMessageBox.Ok的buttonRole是AcceptRole,我希望可以调用accept()
。情况不是这样吗?
任何见解都将受到赞赏。
答案 0 :(得分:2)
你有正确的想法。您只需重新实现虚拟done()广告位,而不是虚拟accept()
广告位:
class Question(QtGui.QMessageBox):
def __init__(self, text):
QtGui.QMessageBox.__init__(
self, QtGui.QMessageBox.Question, "title", text,
buttons=QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
self.text = text
def done(self, result):
print self.text
QtGui.QMessageBox.done(self, result)
result
将是点击按钮的StandardButton值(例如QMessageBox.Ok
或QMessageBox.Cancel
,在上例中。