Python Curses - 模块'curses'没有属性'LINES'。

6
我正在查看一本书中的源代码,并注意到有些代码似乎不在当前的Python2.7 API中。根据这段代码,模块应该有一个名为LINES和另一个名为COLS的常量变量。我打开了Python交互终端,发现没有COLSLINES变量或方法。
我的问题是:这段代码怎么能运行?
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个回答

5

不,它们并不相同:curses.LINES是一个常量,显示默认行数,与窗口设置无关,而window.getmaxyx()是一个函数,返回的行数可能与默认值不同,如果应用于使用curses.newwin()创建的窗口。 - Apostolos

2

1
如果我打开一个Python3交互式shell并导入curses,然后键入curses.LINES,我仍然会收到错误。:/ 謝謝你的回答。 - user_loser
天哪,我刚试了一下 Python 3.3,你说得对,它不能运行。也许试试 3.4 版本? - John Zwinck
1
我正在使用Python 3.2.3:/ 我可能需要尝试升级。我正在阅读的书是2008年出版的,所以我怀疑他们是否在使用Python 3000。:D感谢你的帮助,约翰。你链接的有关终端宽度和高度的SO线程可能是我最好的选择。 - user_loser
1
wong2的回答是正确的。链接的文档是教程,而不是API文档,因此这些变量在两个版本中都没有记录。请注意,由于它们只在initscr之后添加,所以您无法通过from curses import *获取它们。看起来它们会在终端调整大小时动态更新(PEP8建议大写用于常量,但这似乎并非如此)。 - jwelsh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接