сделать окно xterm открытым, пока оно не будет закрыто пользователем - PullRequest
1 голос
/ 13 ноября 2010

как вызвать постоянное окно 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 ]

4 голосов
/ 13 ноября 2010

Не используйте os.system.Используйте подпроцесс

>>> import subprocess
>>> subprocess.Popen(['xterm'])

Хотя вы лучше получаете вывод от subprocess без участия xterm.

>>> process = subprocess.Popen(['lsusb'], shell=False, stdout=subprocess.PIPE)
>>> process.communicate()[0]

Обратите внимание, что shell=False.Вот как вы могли бы прочитать вывод команды lsusb.

Если вы ищете учебник по subprocess, , этот хорош.

0 голосов
/ 06 апреля 2017

Это старый вопрос, но ОП хотел в этом случае:

import subprocess
subprocess.Popen(['xterm','-hold','-title','Usb Devices Available','-geometry','80x30+2000+0','-e','lsusb'])

-hold (оставить окно xterm открытым после его выполнения)
-ititle (имя в xtermwindow) без -title окно принимает имя выполненной команды, в данном случае lsusb
-geometry (ширина терминала, высота, горизонтальное положение, вертикальное положение)
-e (все, что после этой командыдля запуска)
lsusb (команда, которую я хочу запустить в xterm)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...