Я пытаюсь научиться использовать Python Curses (и, надеюсь, построить простую игру), но почему-то я не могу заставить работать панели curses.
В частности, когда я пытаюсь выполнить update_panels (), мой скрипт (ниже) сразу же возвращается непосредственно к приглашению.
import curses, curses.panel, time as t
def main(stdscr):
# Initialize some colors and styles
curses.start_color()
curses.init_pair( 1, curses.COLOR_RED, curses.COLOR_BLACK )
pl_style = curses.color_pair( 1 ) + curses.A_BOLD + curses.A_REVERSE
# Create a Background window and panel
bg_W = curses.newwin( 10, 100, 5, 5 )
bg_W.box();
bg_W.addstr( 1, 2, "BG Window" )
bg_P = curses.panel.new_panel( bg_W )
bg_W.refresh(); t.sleep( 2 )
# Create a Player window and panel
pl_W = curses.newwin( 1, 1, 10, 20 )
pl_W.insch( '+', pl_style )
pl_P = curses.panel.new_panel( pl_W )
pl_W.refresh(); t.sleep( 2 )
# Update panels
curses.panel.update_panels()
curses.doupdate()
# # Move the Player panel and update panels
# pl_P.move( 10, 30 )
# curses.panel.update_panels()
# curses.doupdate()
# t.sleep( 2 )
while True:
if pl_W.getch() == 27: break
if __name__ == "__main__":
curses.wrapper( main )
В качестве альтернативы, когда я пытаюсь просто переместить панели, мой скрипт (ниже), возвращает ошибку.
import curses, curses.panel, time as t
def main(stdscr):
# Initialize some colors and styles
curses.start_color()
curses.init_pair( 1, curses.COLOR_RED, curses.COLOR_BLACK )
pl_style = curses.color_pair( 1 ) + curses.A_BOLD + curses.A_REVERSE
# Create a Background window and panel
bg_W = curses.newwin( 10, 100, 5, 5 )
bg_W.box();
bg_W.addstr( 1, 2, "BG Window" )
bg_P = curses.panel.new_panel( bg_W )
bg_W.refresh(); t.sleep( 2 )
# Create a Player window and panel
pl_W = curses.newwin( 1, 1, 10, 20 )
pl_W.insch( '+', pl_style )
pl_P = curses.panel.new_panel( pl_W )
pl_W.refresh(); t.sleep( 2 )
# # Update panels
# curses.panel.update_panels()
# curses.doupdate()
# Move the Player panel and update panels
pl_P.move( 10, 30 )
curses.panel.update_panels()
curses.doupdate()
t.sleep( 2 )
while True:
if pl_W.getch() == 27: break
if __name__ == "__main__":
curses.wrapper( main )
Ошибка, которую я получаю, выглядит следующим образом:
Traceback (most recent call last):
File "panl2.py", line 36, in <module>
curses.wrapper( main )
File "C:\Program Files\Python38\lib\curses\__init__.py", line 105, in wrapper
return func(stdscr, *args, **kwds)
File "panl2.py", line 27, in main
pl_P.move( 10, 30 )
_curses_panel.error: move_panel() returned ERR
Я чертовски долго пытался выяснить, что не так , но я получаю абсолютно никуда, и был бы очень благодарен за любое руководство.
Я использую windows -курсы (v2.1.0) с Python 3.8 (v3.8.1: 1b293b6) в стандартная командная строка Windows (v10.0.18362.449) на компьютере x64 Windows 10 Pro (v10.0.18362).