2015-02-10 5 views
3

Я смотрю на некоторый исходный код из книги и заметил, что некоторые из кода, похоже, не находятся в текущем API Python2.7. Модуль curses, согласно этому коду, должен иметь постоянную переменную, называемую LINES, а другую - COLS. Я открыл интерактивный терминал Python и увидел, что нет никакой переменной или метода COLS или LINES.Python Curses - модуль 'curses' не имеет атрибута 'LINES'

Мой вопрос: как этот код работает?

def draw_loglines(self): 
     self.screen.clear() 
     status_col = 4 
     bytes_col = 6 
     remote_host_col = 20 
     status_start = 0 
     bytes_start = 4 
     remote_host_start = 10 
     line_start = 26 
     logline_cols = curses.COLS - status_col - bytes_col - remote_host_col - 1 
     for i in range(curses.LINES): 
      c = self.curr_topline 
      try: 
       curr_line = self.loglines[c] 
      except IndexError: 
       break 
      self.screen.addstr(i, status_start, str(curr_line[2])) 
      self.screen.addstr(i, bytes_start, str(curr_line[3])) 
      self.screen.addstr(i, remote_host_start, str(curr_line[1])) 
      #self.screen.addstr(i, line_start, str(curr_line[4])[logline_cols]) 
      self.screen.addstr(i, line_start, str(curr_line[4]), logline_cols) 
      self.curr_topline += 1 
     self.screen.refresh() 

ответ

2

Этот код написан на Python 3. Вы можете увидеть curses.LINES теперь в том, что API, хотя это было не в Python 2.7:

https://docs.python.org/3/howto/curses.html

Если вам нужно, чтобы получить терминал ширина и высота в Python 2, смотрите здесь: How to get Linux console window width in Python

+1

Если я открываю интерактивную оболочку и импорт Python3 'curses' введите' curses.LINES' я все еще получаю ошибку. :/Спасибо за ответ, хотя. –

+0

Священная корова, я попробовал Python 3.3 сейчас, и вы правы, это не работает. Может быть, 3.4? –

+1

Я использую Python 3.2.3:/Возможно, мне придется попробовать обновление. Книга, которую я читаю, была опубликована в 2008 году, поэтому я сомневаюсь, что они использовали Python 3000.: D Спасибо за помощь Джона. Поток SO на ширине и высоте терминала, которые вы связали, может быть, мой лучший вариант. –