Estoy tratando de hacer algo controlado por una interfaz gráfica de usuario de Python Shell.
Lo único es que no sé cómo hacer todo eso de entrada / salida. Solo quiero poder escribir una entrada, ejecutar el comando python y dar la salida del comando python. Sé que IDLE está hecho en Tkinter, ¿entonces usa los widgets?
Literalmente es solo una cosa de "escribir entrada, mostrar salida".
Intenté buscarlo, pero parece que la mayoría de los resultados tienen que ver con la línea de comando, que no es lo que estoy buscando. La única otra pregunta que era exactamente como la mía tampoco era lo que tenía en mente. También intenté buscar el código fuente de IDLE pero no pude encontrar lo que estaba buscando.
He encontrado algunas respuestas que funcionan para Linux pero estoy en Windows 10 ...
Necesito que el "shell" esté en Tkinter porque en un lado de la pantalla habrá algo más que esté conectado a las salidas del comando.
¿Alguien sabe los widgets utilizados para hacer un shell Python muy simple?
fuente
Respuestas:
Python Shell / Terminal / Símbolo del sistema simple
type input
,show output
". ************************El script de python dado anteriormente tiene la siguiente jerarquía tal como se da;
Flujo de trabajo:
El flujo de trabajo básico para el código anterior se proporciona de la siguiente manera;
def welcome_note():...
Incluye la etiqueta que se mostrará fuera del cuerpo del texto.def get_text(self):...
Realiza dos operaciones; ** Obtener texto del cuerpo del texto ** & ** Establecer salida en el cuadro de entrada **.def store_commands(self, command):...
Se usa para almacenar variables en el archivo.def get_stored_commands(self):
... Obtener variable almacenada en el archivo.def check_if_file_empty():
... Verifique el tamaño del archivo.def run_commands(self, command):...
Este método actúa como un compilador de Python que toma comandos, procesa y produce resultados para el comando dado. Para ejecutar comandos, recomendaría usarlosubprocess-module
porque proporciona instalaciones más potentes para generar nuevos procesos y recuperar sus resultados; Para ejecutar comandos de ventana usando python incluye varias bibliotecas integradas como;1. os ( en detalle ), 2. subproceso ( en detalle ) etc.
Para verificar cuál es mejor usar, visite la referencia: subprocess-module es preferible que os-module .
def start_terminal(self):...
Este método simplemente implica la funcionalidad para iniciar latkinter
ventana de sesión y mostrar el diseño básico para la ventana de entrada y salida.Workaroud:
Este simple
tkinter GUI based python shell
realiza una funcionalidad simple como windows-command-prompt. Para ejecutar comandos de Pythondirectly
en el símbolo del sistema sin pasar a la terminal de Python, hacemos lo simple como;Su resultado sería simple como;
Del mismo modo, para ejecutar más de una línea directamente a la vez como se indica;
Su salida sería como;
Entonces, para usar esto
tkinter python shell
;O puede colocar el comando como;
o de esta manera;
o simplemente comando en línea como
Obtendrás el mismo resultado.
fuente
input
,output
shell. Actúa como básicopython kernel
. Solo opera en el que se coloca en el cuerpo del texto . No he configurado ningún búfer o memoria caché para contener el historial de variables. ¡Permítanme verificar primero este requisito en este IDLE!Este es un shell simple que se usa principalmente
exec()
para ejecutar las declaraciones de Python ysubprocess.Popen()
para ejecutar comandos externos:Simplemente ingrese la declaración normal de Python:
O ingrese un comando de shell:
También puedes usar
Up
tecla para recuperar el último comando.Tenga en cuenta que si ejecuta un comando del sistema que requiere la entrada del usuario, el shell se congelará durante 5 segundos (período de tiempo de espera utilizado en
communicate()
).Puede modificar la
on_key()
función para adaptarla a sus necesidades.Recuerde también que usar
exec()
no es una buena práctica.fuente
Había implementado Python Shell usando
code.InteractiveConsole
para ejecutar los comandos para un proyecto. A continuación se muestra una versión simplificada, aunque todavía bastante larga porque había escrito enlaces para teclas especiales (como Retorno, Tabulador ...) para que se comporten como en la consola de Python. Es posible agregar más funciones como autocompletado con jedi y resaltado de sintaxis con pigmentos.La idea principal es que utilizo el
push()
método decode.InteractiveConsole
para ejecutar los comandos. Este método se devuelveTrue
si es un comando parcial, por ejemplodef test(x):
, y utilizo esta retroalimentación para insertar una...
solicitud; de lo contrario, se muestra la salida y se muestra una nueva>>>
solicitud. Capturo la salida usandocontextlib.redirect_stdout
.También hay mucho código que implica marcas e índices de comparación porque evito que el usuario inserte texto dentro de comandos ejecutados previamente. La idea es que creé una marca 'input' que me dice dónde está el inicio de la solicitud activa y
self.compare('insert', '<', 'input')
puedo saber cuándo el usuario está tratando de insertar texto sobre la solicitud activa.fuente