好吧,我正在写一个小型的PyQt4应用程序,它只是一个Yes/No对话框,必须执行一个外部命令(例如“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()
这是我的密码。当我单击“Yes”时,它会正确地调用“eject/dev/sr0”命令,但之后对话框仍然可见。我必须单击“否”关闭应用程序,我希望它在执行命令时自动关闭。我应该添加/修改什么?
步骤1:在主类中需要建立一个“连接”:
步骤2:创建一个类似于关闭的函数:
我故意把它命名为“close it”,因为如果你把它命名为“close”,就会发生冲突。
如果所创建的GUI是另一个程序的插件(如我的案例QGIS),则此解决方案具有优势,只有活动GUI将被关闭,而不是整个程序。
那是我的建议
用具有多个语句的函数/方法替换
lambda: os.system(cmd)
。相关问题 更多 >
编程相关推荐