python - 居中 python curses.panel 子菜单
问题描述
我在将以下 curses.panel 子菜单居中时遇到问题:
import curses
from curses import panel
class Menu(object):
def __init__(self, items, stdscreen):
self.window = stdscreen.subwin(0,0)
self.window.keypad(1)
self.panel = panel.new_panel(self.window)
self.panel.hide()
panel.update_panels()
self.position = 0
self.items = items
self.items.append(('exit','exit'))
def navigate(self, n):
self.position += n
if self.position < 0:
self.position = 0
elif self.position >= len(self.items):
self.position = len(self.items)-1
def display(self):
self.panel.top()
self.panel.show()
self.window.clear()
while True:
self.window.refresh()
curses.doupdate()
for index, item in enumerate(self.items):
if index == self.position:
mode = curses.A_REVERSE
else:
mode = curses.A_NORMAL
msg = '%d. %s' % (index, item[0])
self.window.addstr(1+index, 1, msg, mode)
key = self.window.getch()
if key in [curses.KEY_ENTER, ord('\n')]:
if self.position == len(self.items)-1:
break
else:
self.items[self.position][1]()
elif key == curses.KEY_UP:
self.navigate(-1)
elif key == curses.KEY_DOWN:
self.navigate(1)
self.window.clear()
self.panel.hide()
panel.update_panels()
curses.doupdate()
class MyApp(object):
def __init__(self, stdscreen):
self.screen = stdscreen
curses.curs_set(0)
submenu_items = [
('beep', curses.beep),
('flash', curses.flash)
]
submenu = Menu(submenu_items, self.screen)
main_menu_items = [
('beep', curses.beep),
('flash', curses.flash),
('submenu', submenu.display)
]
main_menu = Menu(main_menu_items, self.screen)
main_menu.display()
if __name__ == '__main__':
curses.wrapper(MyApp)
这复制自: 如何在 Python 诅咒中创建菜单和子菜单? 这是该线程上的第二个代码。我想使菜单居中。self.panel.move(y,x) 不工作,它返回一个错误。有任何想法吗?
解决方案
推荐阅读
- java - 如何在 api-blueprint 中创建对象字段?
- c++ - 是什么让我的 C++ ctime - 相关函数表现异常?
- dart - 颤振:未处理的异常:错误状态:调用关闭后无法添加新事件
- ios - swift如何管理内存
- laravel - 相关模型的数据格式问题(Laravel / jenssegers/laravel-mongodb)
- php - 更新:我不知道为什么小于180秒的时差仍然在用户评分栏中增加了10
- android - Android 依赖对编译和运行时类路径有不同的版本
- html - 溢出:隐藏在 2 个圆圈上
- python - Python:如何根据值列表来定制颜色列表?
- mysql - 存储过程中的 MySQL 案例无法按预期工作