仅在终端的一小部分使用Python 3 curses

时间:2019-02-21 09:53:13

标签: curses python-curses

有没有办法启动诅咒仅占据屏幕的一部分,同时允许在屏幕上方进行常规打印?

因此,在此提供的示例中,所有正常的打印语句将进入常规终端,并在程序完成后继续存在。

import curses
from curses import wrapper
from time import sleep
import random


def main(stdscr):
    stdscr.nodelay(True)
    stdscr.clear()
    participants = 5
    positions = dict()
    for i in range(participants):
    positions[i] = 0
    completed = 0
    game_winner = -1
    while True:
    _c = stdscr.getch()
    round_winner = random.randint(0, participants-1)

    winner_position = positions[round_winner]
    if winner_position < 10:
        positions[round_winner] = winner_position + 1

    stdscr.clear()
    for i in range(participants):
        position = positions[i]
        stdscr.addstr(i, 0, str(i+1) + ": ")
        stdscr.addstr(i, position+3, 'x')
        if position == 10:
            if game_winner < 0:
                game_winner = i + 1
            print(str(i + 1) + " completed the race!")
            positions[round_winner] = position + 1
            completed += 1
    sleep(1)
    if completed >= len(positions):
        break

    print("The winner is " + str(game_winner) + "!")


wrapper(main)

1 个答案:

答案 0 :(得分:1)

问题是

  

有没有办法启动诅咒仅占据屏幕的一部分,同时允许在屏幕上方进行常规打印?

实际上不是:您可以告诉curses假装它使用的是较小的屏幕,但是在那种情况下,它将使用屏幕的顶部(通过设置LINES环境变量)和/或左侧部分(通过设置COLUMNS),但这不会阻止它使用清除屏幕“未使用”部分的擦除。