2015-12-27 2 views
0

Так что в основном я пытаюсь создать текстовый пользовательский интерфейс для приложения python. Это то, что я до сих пор:Очистить только часть экрана в Python

#!/usr/bin/env python 
# encoding: utf-8 

from blessed import Terminal 
import sqlite3 
import sys 
import os 

reload(sys) 
sys.setdefaultencoding("UTF-8") 

db = sqlite3.connect('/Users/JoaoPedro/Desktop/PyTest/Alunos') 
c = db.cursor() 

term = Terminal() 

os.system('clear') 

def main (self): 

print (term.yellow(" CICS 000009/1   Centro Educacional Charles Darwin     z\OS 3.2 ")) 
print (term.yellow(" TERMINAL: 2297    Sistema de Controle de Notas     VITÓRIA/ES ")) 
print (term.yellow(" ======================================================================================= ")) 
print (term.move_y(28)) + (term.yellow(" ======================================================================================= ")) 
matricula = raw_input (term.move(4, 7) + "Matrícula: ") 

os.system('clear') 

print (term.yellow(" CICS 000009/1   Centro Educacional Charles Darwin     z\OS 3.2 ")) 
print (term.yellow(" TERMINAL: 2297    Sistema de Controle de Notas     VITÓRIA/ES ")) 
print (term.yellow(" ======================================================================================= ")) 
print 
print (term.cyan("  Matrícula Nome        Série Turma  Nota ")) 

if matricula in ["/", ""]: 

    c.execute('select * from A ORDER BY nome') 
    rows = c.fetchall() 

else: 

    c.execute('select * from A WHERE matricula = ?', (matricula,)) 
    rows = c.fetchall() 

for row in rows: 
    print (term.white((term.move_x(9)) + row[0] + (term.move_x(20)) + row[1] + (term.move_x(56)) + row[2] + (term.move_x(64)) + row[3] + (term.move_x(73)) + row[4])) 
print (term.move_y(28)) + (term.yellow(" ======================================================================================= ")) 
command = raw_input (term.move(27, 2) + "Comando ===> ") 
if command == "X": 
    os.system('clear') 
    sys.exit() 
else: 
    os.system('clear') 
    main('self') 


main('self') 

Как вы можете видеть, я должен напечатать верхнюю и нижнюю часть каждый раз, когда происходит новый запрос. Теперь это прекрасно подходит для небольшого приложения, подобного этому, но если я добавлю ему больше функций, мне придется каждый раз повторять одну и ту же строку кода (сверху и снизу).

Мне было интересно, если есть какой-либо способ сохранить верхнюю и нижнюю статичные и разрешить программе очищать области между ...?

ответ

1

Я не знаком с блаженной, но данной проблемой:

Я должен повторить ту же строку коды (сверху и снизу) каждый раз.

Если вы обнаружите, что повторяете одни и те же строки кода, используйте функцию.

Put это выше "Защита основные (само):"

def drawTop(): 
    print (term.yellow(" CICS 000009/1   Centro Educacional Charles Darwin     z\OS 3.2 ")) 
    print (term.yellow(" TERMINAL: 2297    Sistema de Controle de Notas     VITÓRIA/ES ")) 
    print (term.yellow(" ======================================================================================= ")) 

и заменить каждое вхождение из трех печатных линий с

drawTop() 
2

Не вызывайте os.system('clear'), просто введите символы пробела в строках экрана, которые вы хотите очистить. В качестве альтернативы просто напишите новое содержимое, пробелы до конца строки, чтобы очистить все, что было до этого.

+0

Wow! Это на самом деле довольно хорошо, и я бы никогда не подумал об этом –

Смежные вопросы