Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 23, 2015 14:18:50

cdi9
Зарегистрирован: 2015-04-10
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Эмулятор Консоли

У меня есть простая программка на питоне.

import os
import sys
import subprocess
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from subprocess import Popen, PIPE, STDOUT

def main():
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())

class MyWindow(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)

# create objects
label = QLabel(self.tr(“Enter command and press Return”))
self.le = QLineEdit()
self.te = QTextEdit()
self.te.setCurrentFont(QFont(“Monospace”))
self.te.setFontPointSize(9)

# layout
layout = QVBoxLayout(self)
layout.addWidget(label)
layout.addWidget(self.le)
layout.addWidget(self.te)
self.setLayout(layout)

# create connection
self.connect(self.le, SIGNAL(“returnPressed(void)”),
self.run_command)

def run_command(self):
cmd = str(self.le.text())
p = Popen(cmd.split(), stdin=PIPE, stdout=PIPE, stderr=STDOUT)
stdouterr, err = p.communicate(b“input data that is passed to subprocess' stdin”)
self.te.setText(stdouterr.decode(“utf-8”))

if __name__ == “__main__”:
main()

При ее запуске появляется окно, похожее на консоль. Я ввожу команды и результаты должны выводиться, как будто я ввожу команды в консоли.
на пример, если я ввожу команду “ls -al”, то она срабатывает. а если “cd /home”, то пишет, что файл не найден. Сама программка лежит на рабочем столе. Помогите плиз решить проблему

Офлайн

#2 Апрель 23, 2015 23:25:26

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Эмулятор Консоли

1) код на форуме всегда нужно оборачивать в теги

[code python] [/code]
2) добавьте в communicate аргумент shell=True



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Апрель 23, 2015 23:30:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version