【问题标题】:Python curses border doesn't redraw; window resizing ruins borderPython 诅咒边框不会重绘;窗口大小调整废墟边框
【发布时间】:2022-10-26 03:44:11
【问题描述】:

我有一个非常简单的 curses 项目(我开始为 CLI 主题的文本游戏学习这个库)并且希望在我的窗口周围有一个边框。但是,运行screen.border() 不会重绘我的屏幕边框,这会使调整窗口大小完全破坏边框。

调整大小之前: 调整大小后: 当前代码:

if __name__ == "__main__":

    import curses

    screen = curses.initscr()
    curses.cbreak()
    curses.curs_set(0)
    curses.noecho()
    curses.start_color()
    curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK)
    running = True
    key = None

    while running:
        max_y, max_x = screen.getmaxyx()
        screen.border()
        screen.addstr(1, 1, "Key Code:", curses.color_pair(1))
        screen.addstr(2, 1, str(key))
        screen.refresh()
        screen.timeout(20)
        old_key = key
        key = screen.getch()

        if key >= 0:

            match key:

                case 27:
                    running = False

                case curses.KEY_RESIZE:
                    pass

                case _:
                    pass

        else:
            key = old_key

        screen.erase()

    curses.endwin()

【问题讨论】:

    标签: python-3.x command-line-interface python-curses


    【解决方案1】:

    死灵反应,我知道。你现在可能已经想通了,但由于我目前正在研究诅咒,我想我会回答这个问题: 它不起作用,因为您声明

    screen = curses.initscr()
    

    在循环之外。这基本上在您运行应用程序并将屏幕初始化为窗口时使用控制台一次,基本上设置该窗口属性。稍后你调用那个窗口

    screen.border()
    

    这就是为什么比例不起作用的原因。它采用最初初始化窗口的尺寸,因此当您调整窗口大小时它会不断重绘边框,但实际上并没有改变窗口大小。

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 2012-09-13
      • 2012-04-03
      相关资源
      最近更新 更多