好吧,我正在写一个小的PyQt4应用程序,它只是一个必须执行外部命令(例如’eject / dev / sr0’)并退出的Yes / No对话框。
该应用程序运行,按下“是”按钮后执行命令,但是执行命令时我无法使对话框本身退出。
#!/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”命令,但此后该对话框仍然可见。我必须单击“否”以关闭应用程序,我希望它在执行命令时自动关闭。我应该添加/修改什么?
替换lambda: os.system(cmd)为具有多个语句的函数/方法。
lambda: os.system(cmd)
def buttonClicked(self): os.system(cmd) QtCore.QCoreApplication.instance().quit() ... btn = QtGui.QPushButton('Yes', self) btn.clicked.connect(self.buttonClicked) ...