Диалоговое окно PyQt -Как заставить его выйти после нажатия кнопки?

Что ж, я пишу небольшое приложение PyQt4, это всего лишь один диалог Да/Нет, который должен выполнить внешнюю команду (, например. 'eject /dev/sr0' )и выйти.

Приложение запускается, оно выполняет команду после нажатия кнопки «Да», но я не могу заставить само диалоговое окно выйти при выполнении команды.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import os
import subprocess
from PyQt4 import QtGui
from PyQt4 import QtCore
from subprocess import call
cmd = 'eject /dev/sr0'

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        btn = QtGui.QPushButton('Yes', self)     
        btn.clicked.connect(lambda: os.system(cmd))
        btn.resize(180, 40)
        btn.move(20, 35)       

        qbtn = QtGui.QPushButton('No', self)
        qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        qbtn.resize(180, 40)
        qbtn.move(20, 80) 

        self.setWindowTitle('Test')    
        self.show()

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

Вот мой код. Когда я нажимаю «Да», он правильно вызывает команду «eject / dev / sr0», но после этого диалоговое окно все еще видно. Мне нужно нажать «Нет», чтобы закрыть приложение. Я хочу, чтобы оно закрывалось автоматически при выполнении команды. Что мне добавить/изменить?

12
задан Jonathan Leffler 1 January 2014 в 05:06
поделиться