Bonjour à tous,
Je suis en train d'essayer de faire un menu en mode console qui fonctionne plutôt bien. Cependant je rencontre un souci quand je souhaite faire une consultation de donnée sous forme de tableau avec pagination.
Voici ma classe pour naviguer en faisant une pagination :
Mon souci c'est le choix pour passer aux données suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class NavTable(): def __init__(self,data): self.data = data self.nb = 0 #numero d'indexation pour parcourir les donnée self.page = 1 #numero des pages a afficher en bas du tableau self.choices = "" self.launch = True self.navigate = True self.menu = """ ######################### Menu ####################### 1) Revoir le tableau 2) Retour menu principal """ def display_files_table(self): if self.data[self.nb]: sizes = [max(map(len, column)) for column in zip(*self.data[self.nb]])] divider = '+' + ''.join('-'*size+'--+' for size in sizes) lines = ['|' + ''.join( ' ' + value.ljust(size) + ' |' for size, value in zip(sizes, row) ) for row in self.data[self.nb]]] return '\n'.join([divider, lines[0], divider] + lines[1:] + [divider]) else: return "no data" def display_table(self): while self.navigate: print self.display_files_table(nb) if self.page <= len(self.data): print "Page",page,"sur",len(self.data),"\n--------------------------" self.choices = raw_input("Next (n) / Prec (p) / supprimer ligne (del) / stop (s):",) if self.choices == "n": self.choices="" print "nb=",nb self.nb += 1 self.page += 1 self.console_clear() print self.display_files_table(self.nb) if page <= len(self.data): print "Page",page,"sur",len(self.data),"\n--------------------------" self.choices = raw_input("Next (n) / Prec (p) / supprimer ligne (supp) / stop (s):",) elif self.choices == "p": self.choices="" self.nb -= 1 self.page -= 1 self.console_clear() print self.display_files_table(self.nb) if page <= len(self.data): print "Page",page,"sur",len(self.data),"\n--------------------------" self.choices = raw_input("Next (n) / Prec (p) / supprimer ligne (supp) / stop (s):",) elif self.choices == "del": self.choices="" print self.choices print "########### Suppression de ligne ###########\nRemarque : si plusieurs lignes a supprimer , renseigner les id séparés par des virgules" elif self.choices == "s": self.choices="" self.navigate=False def start(self): while self.launch: print "################### Tableau des fichiers erroné ################" print self.menu choix = raw_input("Choix : ",) if choix == 1: self.display_table() elif choix == 2 self.launch = False
- Quand je fais "n" la 1ère fois pas de problème : ca passe a la seconde page
- apres faut rentrer 2x n ou 2x p pour aller à la page suivante ou précédente, ainsi que pour stopper il faut faire 2x "s"
- quand je mets "del" ca ne marche pas
Du coup je pense qu'il y a un souci avec mon input, si vous pouvez m'éclairer sur la bonne façon de faire
petit jeux de données anonymisé pour tester :
Remarque : Je suis sur du python2.7 (que je ne peux pas upgrader malheureusement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 data = [ [ ("id", "fullname", "part", "repertoire", "date_creation"), ( "1", fichiertest fichiertest "Work", "2025-03-18 06:18:08", ), ( "2", fichiertest fichiertest "Work", "2025-03-25 06:18:07", ), ( "3", fichiertest fichiertest "Work", "2025-03-11 06:54:06", ), ( "4", fichiertest fichiertest "Work", "2025-03-11 06:06:07", ), ( "5", fichiertest fichiertest "Work", "2025-03-13 17:18:09", ), ( "6", fichiertest fichiertest "Work", "2025-03-13 14:42:09", ), ( "7", fichiertest fichiertest "Work", "2025-03-21 16:06:07", ), ( "8", fichiertest fichiertest "Work", "2025-03-17 15:18:10", ), ( "9", fichiertest fichiertest "Work", "2025-03-17 10:06:07", ), ( "10", fichiertest fichiertest "Work", "2025-03-13 16:54:07", ), ], [ ("id", "fullname", "part", "repertoire", "date_creation"), ( "11", fichiertest fichiertest "Work", "2025-03-25 14:30:09", ), ( "12", fichiertest fichiertest "Work", "2025-03-17 06:18:08", ), ( "13", fichiertest fichiertest "Work", "2025-03-18 11:54:07", ), ( "14", fichiertest fichiertest "Work", "2025-03-10 06:18:06", ), ( "15", fichiertest fichiertest "Work", "2025-03-19 06:18:06", ), ( "16", fichiertest fichiertest "Work", "2025-03-13 14:54:07", ), ( "17", fichiertest fichiertest "Work", "2025-03-17 16:54:07", ), ( "18", fichiertest fichiertest "Work", "2025-03-18 07:18:08", ), ( "19", fichiertest fichiertest "Work", "2025-03-14 12:06:09", ), ( "20", fichiertest fichiertest "Work", "2025-03-13 14:30:07", ), ], ])
Partager