Форум сайта python.su
Спасибо, как разберусь - отпишу
Офлайн
Я так понимаю в функции должно быть что-то вроде этого, но мне выдает ошибку синтаксиса в последней строке нижеприведенного кода. Никак не могу понять, что не так. Вроде все тоже самое сделал, что и в статье.
def export(event): cmd=('call export.bat') proba=subprocess.check_call(cmd,shell=True,stdout=subprocess.PIPE, stderr=stdout) s=' ' while s: s=proba.stdout.readline() print s.rstrip()
Отредактировано victoreva (Март 22, 2015 21:43:00)
Офлайн
from tkinter import * import re import os import subprocess # def window_deleted(): root.quit() def send_text(msg): text.insert("end", msg) text.update() def close_win(): root.destroy() def export(event): cmd=('call export.bat') proba=subprocess.check_call(cmd,shell=True,stdout=sp.PIPE, stderr=stdout) s=' ' while s: send_text(proba.stdout.readline()) def import(event): cmd=('call bat2.bat') subprocess.check_call(cmd, shell=True) root= Tk() m = Menu(root) root.config(menu=m) root.title(u'SecurytiUp') root.protocol('WM_DELETE_WINDOW', window_deleted) w, h = root.winfo_screenwidth() - 4, root.winfo_screenheight() - 4 root.geometry("{}x{}+0+0".format(w, h)) root.attributes('-fullscreen', 1) frame1=Frame(root,width=100,heigh=100,bg='green',bd=5) frame1.pack() text = Text(frame) text.pack() button1 = Button(frame1, text="Экспорт",width=30,height=5, bg="white",fg="blue") button1.bind("<Button-1>",export) button1.pack() button2 = Button(frame1, text="Импорт",width=30,height=5, bg="white",fg="blue") button2.bind("<Button-1>",import) button2.pack() root.mainloop()
Отредактировано 4kpt_III (Март 22, 2015 22:06:24)
Офлайн
Запускается прога, но ничего не выводит и вылезает ошибка:
NameError: name ‘stdout’ is not defined.
И вы еще сказали можно сделать так, чтоб нельзя было редактировать поле текстовое. Можете сразу и это написать?
P.S. Чтоб затирало логи нужно очищать каждый раз текстовое поле в начале вызова функции вывода? Или есть какой то метод?
P.S.S. Я так понял это я неправильно написал вывод ошибок: stderr=stdout, надо было видимо stderr=subprocess.stdout писать?
Убрав атрибут stderr и попробовав запустить программу, консоль пишет об ошибке :
AttributeError: ‘int’ object has no attribute ‘stdout’
Отредактировано victoreva (Март 22, 2015 22:31:26)
Офлайн
1. Для блокировки можно использовать state=“disabled”. Но это блокировка от ввода. От копирования нужно проверять. На крайний случай можно перехватить обработчики ctrl-c, ctri-ins.
2. Да. Есть метода .delete(старт, конец). В Вашем случае нужно указать начало и конец документа.
3. А вот это мы же договорились. Вы уже сами
Офлайн
Помогите до конца разобраться. Никак не могу додуматься в чем тут проблема, исправил ошибки в скрипте, теперь он выглядит так
from tkinter import * import re import os import subprocess import sys def window_deleted(): root.quit() def send_text(msg): text.insert("end", msg) text.update() def close_win(): root.destroy() def export(event): cmd=('call export.bat') proba=subprocess.check_call(cmd,stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) s=' ' while s: send_text(proba.stdout.readline()) root= Tk() m = Menu(root) root.config(menu=m) frame1=Frame(root,width=100,heigh=100,bg='green',bd=5) frame2=Frame(root,width=200,heigh=200,bg='red',bd=5) frame1.pack() frame2.pack() text = Text(frame2,state='disabled') text.pack() but1 = Button(frame1, text="Экспорт",width=30,height=5, bg="white",fg="blue") but1.bind("<Button-1>",export) but1.pack() root.mainloop()
Отредактировано victoreva (Март 23, 2015 14:47:05)
Офлайн
victoreva
FileNotFoundError: Не удается найти указанный файл
import os print os.getcwd() for obj in os.listdir(os.getcwd()): print "-- {}".format(obj)
Офлайн
Синтаксическая ошибка, ругается на строку:
print os.getcwd()
Ну а если так смотреть папку, то конечно скрипт лежит в одной папке с python файлом.
Офлайн
Какая ошибка?
Офлайн
File “proba2.py”, line 11
print os.getcwd()
^
SyntaxError: invalid syntax
Офлайн