2011-10-03 28 views
5

Estoy escribiendo un script de Python para imprimir la interfaz de usuario que se muestra. El problema es que cada usuario de Linux tendría su propio tamaño de terminal único. Esto hará que la interfaz de usuario codificada salga del formato.Linux Terminal Display y Python

(Si hay muchos ejemplos a continuación, la terminal se ve loca !!!).

Ejemplo, en el script. Tengo imprimir:

print "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" 

formato debe va bien en mi terminal: +++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++

Cuando el la terminal es más pequeña, el formato de impresión se agotará. Formato become: ++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++

Así que estoy pensando:

  1. Cuando el usuario ejecutar la secuencia de comandos, ¿puedo cambiar automáticamente el tamaño del terminal de Linux a mi tamaño de declaración
  2. Puedo obtener el ancho y la longitud del tamaño del terminal de usuario con Python, por lo que la pantalla del terminal puede ser flexible
  3. Me gustaría escuchar cualquier bett ¡Solución de problemas en todo el mundo para resolver el problema de visualización del terminal!

yo preferiría firmemente la recomendación en Python

+0

Es posible que desee echarle un vistazo a [esta pregunta] (http://stackoverflow.com/questions/566746/how-to-get-console-window-width-in-python). –

+0

Esa pregunta, obtenga el tamaño del terminal. ¿Qué sería lo más recomendado? (Probablemente, para fines de programación futura) ¿Obtenga el tamaño del terminal o lo cambie de tamaño? – Ezylryb

+0

Obtén el tamaño. No puedes cambiar el tamaño de los terminales.(bueno, tal vez algunos tipos, pero incluso a los usuarios no les gustaría) –

Respuesta

8

yo recomiendo usar algo como módulo de la librería estándar de Python curses para hacer esto.

No reinvente la rueda: el uso de una biblioteca existente le ayudará a evitar las cajas de esquina y también le ahorrará tiempo. Además, la interfaz de curses es familiar para los usuarios de * nix, lo que hará que les gustes más.

+0

Hm .. Interesante! Entonces, la API cambia automáticamente el tamaño del terminal o recibe el tamaño del terminal? – Ezylryb

+0

'curses' está diseñado para funcionar con cualquier tamaño de terminal existente del usuario. (A la mayoría de las personas no les gusta que fuerce a sus terminales a cambiar el tamaño, y es posible que algunas terminales ni siquiera le permitan cambiar el tamaño de las mismas). – Amber

+0

¡Es verdad! ¡Algunos terminales no pueden redimensionarse! – Ezylryb

1

Como se sugirió Amber, debería usar una biblioteca como curses.

Aún así, usted podría conseguir el ancho de la terminal usando algo como esto:

import subprocess 
int(subprocess.Popen(['tput', 'cols'], stdout=subprocess.PIPE).stdout.read()) 
+0

¡Genial! ¡Voy a intentarlo! – Ezylryb

0

Sobre la base de los comentarios en Amber's solution, existe un deseo de ver una solución que funciona también en Windows. Una solución simple de plataforma cruzada es usar asciimatics. Por ejemplo:

from asciimatics.screen import Screen 

def demo(screen): 
    screen.print_at('+' * screen.width, 0, 0) 
    screen.refresh() 
    sleep(10) 

Screen.wrapper(demo) 

Este paquete también proporciona una carga completa de reproductores de alto nivel para que el texto de pantalla completa UIS más fácil. Vea el contact list demo para un ejemplo.

Descripción completa: sí - Soy el autor de ese paquete y, por tanto, podría ser un poco parcial. :-)

Cuestiones relacionadas