5

本のソース コードを調べているときに、一部のコードが現在の Python2.7 API に含まれていないように見えることに気付きました。モジュールcursesは、このコードによれば、 という定数変数と という定数変数を持つことになっていLINESますCOLS。Python インタラクティブ ターミナルを開いたところ、変数やメソッドがないCOLSか、存在しないことがわかりました。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()
4

2 に答える 2

5

curses.LINESPython2 と Python3 に存在することがわかりましたが、curses.initscr使用する前に呼び出す必要があります。そうしないと、AttributeError が返されます。

あなたも使うことができますwindow.getmaxyx

[1] https://docs.python.org/2/library/curses.html#curses.window.getmaxyx

于 2016-01-20T03:57:32.953 に答える
2

そのコードは Python 3 用に書かれcurses.LINESています。Python 2.7 にはありませんでしたが、現在はその API に含まれていることがわかります。

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

Python 2 で端末の幅と高さを取得する必要がある場合は、こちらを参照してください: Python で Linux コンソール ウィンドウの幅を取得する方法

于 2015-02-10T03:12:36.637 に答える