-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcurses_example_2.py
More file actions
94 lines (82 loc) · 2.82 KB
/
curses_example_2.py
File metadata and controls
94 lines (82 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
'''
Created on Jun 7, 2017
@author: reef425@gamil.com
'''
import curses
urside=["Brown bear",
"Polar bear",
"Asian black bear",
"American black bear",
"Sun bear",
"Sloth bear",
"Spectacled bear",
"Giant panda"]
bear=[
" .--. .--.",
" : (\ \". _......_ .\" /) :",
" '. ` ` .'",
" /\' _ _ `\\",
" / 0} {0 \\",
" | / \\ |",
" | /\' `\\ |",
" \\ | . .==. . | /",
" '._ \\.\' \\__/ \'./ _.\'",
" / ``'._-''-_.'`` \\" ]
def myMenu(index=0):
myScreen.erase()
myScreen.addstr(1,5,"Menu:")
# Выводим на экран список медведей
for i,item in enumerate(urside):
if index!=i:
myScreen.addstr(i+2,5, item)
else:
# Строка на которой находится курсор будет выделенной с помощью атрибута curses.A_STANDOUT
myScreen.addstr(i+2,5, item,curses.A_STANDOUT)
myScreen.addstr(14,5,"Press \"enter\" get description")
myScreen.addstr(15,5,"Press \"q\" for quit")
myScreen.refresh()
def myDescription(index=0):
myScreen.erase()
# Отображаем имя медведя из списка
myScreen.addstr(1,5,"bear name: "+urside[index])
myScreen.addstr(2,5,"description: ")
for i,item in enumerate(bear):
myScreen.addstr(i+3,5, item)
myScreen.addstr(14,5,"Press \"up\",\"down\" back to menu")
myScreen.addstr(15,5,"Press \"q\" for quit")
myScreen.refresh()
def main():
key = 'X'
count=len(urside)-1
index=0
# Включаем обработку дополнительных клавиш
myScreen.keypad(True)
myMenu()
while key != ord('q'):
# Обработка curses.KEY_UP и curses.KEY_DOWN, нажатие вверх и вниз стрелок на клавиатуре
key = myScreen.getch()
if key==curses.KEY_UP:
index-=1
if index==-1:
index=count
if key==curses.KEY_DOWN:
index+=1
if index>count:
index=0
# Обработка нажатия клавиши enter, curses.KEY_ENTER - обрабатывается не надежно поэтому добавляем
# дополнительную обратку key==10
if key==curses.KEY_ENTER or key==10:
myDescription(index)
else:
myMenu(index)
myScreen.refresh()
try:
myScreen=curses.initscr()
# По умолчанию аргумент метода curses.curs_set() равен 1 - курсор отображается
# при curses.curs_set(0) курсор не отображется
curses.curs_set(0)
main()
finally:
curses.endwin()
if __name__ == '__main__':
pass