刷新termin的问题

2024-09-30 22:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我对刷新终端有问题。我正在使用python和curses模块。有一个随机名称生成器,它在程序开始时在预定义的文本旁边显示生成的名称。用户可以修改名称(添加/删除字符)。你知道吗

问题出在哪里?在屏幕的开头只显示预定义的文本。已输入生成的名称,但所有字符均为黑色,用户无法看到它。仅当名称被修改时屏幕才会刷新,即用户添加新字母或删除最后一个字母。你知道吗

我想刷新屏幕后刚刚产生的名称。你知道吗

Algo:(GetStringName函数的一部分)

    str = true_heroname #generated name
    self.screen.move(y, x + len(str))
    self.screen.refresh()                   #it should refresh screen after placing generated name
    self.screen.addstr(y, x, prompt, pattr)
    x += len(prompt)
    while True:
        self.screen.move(y, x + len(str))
        self.screen.refresh()
        ####AND BELOW CODE TO ADD/REMOVE LETTERS###

此函数用于在主菜单中生成名称:

    self.name = Global.IO.GetStringName("What's your name? ", noblank=True, pattr=c_yellow, iattr=c_Yellow)
    #c_yellow and c_Yellow are predefinied colors

我希望描述和代码剪清楚。你知道吗

如何在输入生成的名称后自动刷新屏幕?你知道吗


Tags: 函数用户name文本self名称len屏幕
1条回答
网友
1楼 · 发布于 2024-09-30 22:21:59

你的帖子并没有让我完全明白你的问题,但如果我能指出一种在屏幕上画画的一般方法,也许会有所帮助。 我想你的自动屏幕是真正的诅咒stdscr。你知道吗

while True:
    userinput = self.screen.getch() # User enters character

    # Move to start of terminal
    # This may not be necessary depending on your application
    curses.move(self.screen, 0, 0) 

    # Do your drawing here, depending on what char the user entered
    # ...
    self.screen.addstr("Hello world!")

    curses.clrtobot(self.screen) # Clear remainder of the screen
    self.screen.refresh() # Refresh terminal, to show new drawings

相关问题 更多 >