Найти - Пользователи
Полная версия: Вывод результата выполнения команд вызываемого bat-ника в Label
Начало » GUI » Вывод результата выполнения команд вызываемого bat-ника в Label
1 2 3
victoreva
Всем доброго времени суток!
Хочу сделать gui для своих батников. Фрейм условно можно разделить на две части, в одной - кнопки(с привязкой к bat-файлам), в другой - label (тут должен отображаться результат выполнения команд в bat-файле). Так вот у меня стоит вопрос как правильно описать label. Может кто накидать код как это можно реализовать? Если это в принципе возможно конечно. В идеале нужно, чтоб результаты команд от вызова предыдущих bat-ников не затирались. Заранее спасибо.
4kpt_III
Какой тип GUI. Укажите.
victoreva
Tkinter
4kpt_III
Вам не label нужен, а Text. В этом случае получается, что можно добавлять строки в конец текста. Делать между ними разграничительные линии и т.п.
victoreva
Разве текстовое поле можно настроить так, чтобы у пользователя не было возможности редактирования?
Да и как бы основной вопрос все таки не в том, чтобы команды не затирала. А вообще чтоб выводился туда результат. А незатирание это просто как доп задача
4kpt_III
Да. Можно сделать так, чтобы пользователь не мог редактировать. Для введения результата в текстовое поле необходимо использовать его метод insert(). После использования метода .insert() нужно сделать .update() тем самым внеся изменения в отображение.
victoreva
Можете привести пример кода?
Например вначале, я щелкаю по кнопке button1 и запускается на выполнение файл bat1.bat, а потом я щелкаю по кнопке button2 и запускается файл bat2.bat. Нужно вывести результаты выполнения этих файлов в text1 без затирания и без возможности редактирования? Буду очень признателен
4kpt_III
Давайте так. Вы пишете python-скрипт, который запускает файл bat1.bat и выводит его результат просто в консоль, а с остальным я уже помогу…
victoreva
Да дело в том, что я не совсем понимаю даже как сделать вывод в консоль. Вот все что у меня есть:
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()	
4kpt_III
Вам необходимо вывести на экран результат выполнения подпроцесса. Как это сделать рекомендую глянуть в блоге очень мной уважаемого человека. Вот тут есть вся нужная Вам информация.

P.S. После того, как Вы отобразите информацию на экране через инструкцию print я поясню как эти данные запихнуть в Text.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB