Форум сайта python.su
Всем доброго времени суток!
Хочу сделать gui для своих батников. Фрейм условно можно разделить на две части, в одной - кнопки(с привязкой к bat-файлам), в другой - label (тут должен отображаться результат выполнения команд в bat-файле). Так вот у меня стоит вопрос как правильно описать label. Может кто накидать код как это можно реализовать? Если это в принципе возможно конечно. В идеале нужно, чтоб результаты команд от вызова предыдущих bat-ников не затирались. Заранее спасибо.
Офлайн
Какой тип GUI. Укажите.
Офлайн
Tkinter
Офлайн
Вам не label нужен, а Text. В этом случае получается, что можно добавлять строки в конец текста. Делать между ними разграничительные линии и т.п.
Офлайн
Разве текстовое поле можно настроить так, чтобы у пользователя не было возможности редактирования?
Да и как бы основной вопрос все таки не в том, чтобы команды не затирала. А вообще чтоб выводился туда результат. А незатирание это просто как доп задача
Отредактировано victoreva (Март 22, 2015 19:05:38)
Офлайн
Да. Можно сделать так, чтобы пользователь не мог редактировать. Для введения результата в текстовое поле необходимо использовать его метод insert(). После использования метода .insert() нужно сделать .update() тем самым внеся изменения в отображение.
Офлайн
Можете привести пример кода?
Например вначале, я щелкаю по кнопке button1 и запускается на выполнение файл bat1.bat, а потом я щелкаю по кнопке button2 и запускается файл bat2.bat. Нужно вывести результаты выполнения этих файлов в text1 без затирания и без возможности редактирования? Буду очень признателен
Отредактировано victoreva (Март 22, 2015 19:15:17)
Офлайн
Давайте так. Вы пишете python-скрипт, который запускает файл bat1.bat и выводит его результат просто в консоль, а с остальным я уже помогу…
Офлайн
Да дело в том, что я не совсем понимаю даже как сделать вывод в консоль. Вот все что у меня есть:
from tkinter import * import re import os import subprocess def window_deleted(): root.quit() def about(): win = Toplevel(root) lab = Label(win,text="Это просто программа-тест") lab.pack() def close_win(): root.destroy() def export(event): cmd=('call bat1.bat') subprocess.check_call(cmd, shell=True) 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() 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()
Отредактировано victoreva (Март 22, 2015 20:26:55)
Офлайн
Вам необходимо вывести на экран результат выполнения подпроцесса. Как это сделать рекомендую глянуть в блоге очень мной уважаемого человека. Вот тут есть вся нужная Вам информация.
P.S. После того, как Вы отобразите информацию на экране через инструкцию print я поясню как эти данные запихнуть в Text.
Офлайн