使xterm窗口保持打开状态直到用户关闭它
如何打开一个常驻的xterm窗口,只有用户手动关闭它时才会关闭?
下面是会重现这个问题的代码
import os
from PyQt4 import QtCore, QtGui
from main import Ui_MainWindow
class Main(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.pushID, QtCore.SIGNAL('clicked()'), self.showid)
def showid(self):
process = subprocess.Popen(['lsusb'], shell=False, stdout=subprocess.PIPE)
process.communicate()[0]
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())
有什么建议吗?
2 个回答
0
这是一个老问题,但提问者在这种情况下想要的是:
import subprocess
subprocess.Popen(['xterm','-hold','-title','Usb Devices Available','-geometry','80x30+2000+0','-e','lsusb'])
-hold(执行完后保持xterm窗口打开)
-title(xterm窗口的名称)如果不加-title,窗口会显示执行的命令名称,这里是lsusb
-geometry(终端的宽度、高度、水平位置和垂直位置)
-e(后面的内容是要运行的命令)
lsusb(我想在xterm中运行的命令)
4
不要使用 os.system
。应该使用 subprocess。
>>> import subprocess
>>> subprocess.Popen(['xterm'])
其实你最好是直接通过 subprocess
获取输出,而不需要用到 xterm
。
>>> process = subprocess.Popen(['lsusb'], shell=False, stdout=subprocess.PIPE)
>>> process.communicate()[0]
注意要设置 shell=False
。这样你就可以读取 lsusb
命令的输出了。
如果你想找关于 subprocess
的教程,这个不错。