Как я могу сделать, чтобы закрыть всплывающее диалоговые и его QMessageBox.information
когда кнопка ok
нажатаКак закрыть QMessageBox и его диалог родительскую в питона
Я получил этот код из here
Я использую это как всплывающее диалоговое окно в моем модуле. Диалоговое окно другой QMessageBox.information
со стандартной ok
кнопки
this one http://i60.tinypic.com/28kocih.jpg
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import serial
from serial.serialutil import SerialException
from serialutils import full_port_name, enumerate_serial_ports
class ListPortsDialog(QDialog):
def __init__(self, parent=None):
super(ListPortsDialog, self).__init__(parent)
self.setWindowTitle('List of serial ports')
self.ports_list = QListWidget()
self.tryopen_button = QPushButton('Try to open')
self.connect(self.tryopen_button, SIGNAL('clicked()'),
self.on_tryopen)
layout = QVBoxLayout()
layout.addWidget(self.ports_list)
layout.addWidget(self.tryopen_button)
self.setLayout(layout)
self.fill_ports_list()
def on_tryopen(self):
cur_item = self.ports_list.currentItem()
if cur_item is not None:
fullname = full_port_name(str(cur_item.text()))
try:
ser = serial.Serial(fullname, 38400)
ser.close()
QMessageBox.information(self, 'Success',
'Opened %s successfully' % cur_item.text())
except SerialException, e:
QMessageBox.critical(self, 'Failure',
'Failed to open %s:\n%s' % (
cur_item.text(), e))
def fill_ports_list(self):
for portname in enumerate_serial_ports():
self.ports_list.addItem(portname)
if __name__ == "__main__":
app = QApplication(sys.argv)
form = ListPortsDialog()
form.show()
app.exec_()
Я хотел, чтобы закрыть оба окна 3 и окно 2, когда кнопка ОК нажата
Thats Awesome ... Окончательно решена! Можете ли вы объяснить, как это работает ... Я новичок в python, что-то понимает @Achayan –
http://pyqt.sourceforge.net/Docs/PyQt4/qdialog.html#accept и http: //pyqt.sourceforge .net/Docs/PyQt4/qdialog.html # details :) – Achayan