我需要安装一个移动箱。 唯一的相关控制是 up缩的钥匙。 清单箱应当显示像屏幕上(屏幕_rows)一样,从清单中显示的物品数量很多,而且如果强调最后一个项目(即,如果用户在重点强调第一个项目时点击arrow或arrow倒,则显示器应当有高视力(别为滚动),显示器应当总结一下。 狭义地强调了前一项目,而 down淡地突出了下一个项目。
我把一些东西放在一起,但我担心在测试中忽略了一些东西。 必须有一个标准的方法来做到这一点,因为清单箱遍布当地。
def up_key(self):
if self.sel_row > 0:
self.sel_row -= 1
elif self.top_item > 0: # top_item is the index of the first list item
self.top_item -= 1
elif self.top_item == 0:
if self.n_lines >= self.screen_rows: # n_lines is the number of items in the list
self.top_item = self.n_lines - self.screen_rows
self.sel_row = min(self.screen_rows-1, self.n_lines-1)
else:
self.top_item = 0
self.sel_row = self.n_lines-1
def down_key(self):
if self.sel_row < self.screen_rows-1 and self.sel_row < self.n_lines-1:
self.sel_row += 1
elif self.sel_row == self.screen_rows-1:
bottom_item = self.top_item + self.screen_rows
if bottom_item == self.n_lines:
self.top_item = 0
self.sel_row = 0
if bottom_item < self.n_lines:
self.top_item += 1
elif self.sel_row == self.n_lines-1:
self.top_item = 0
self.sel_row = 0
def set_pos(self, pos): # display item with index pos
if pos < 0:
pos = 0
elif pos >= self.n_lines:
pos = self.n_lines - 1
if pos < self.screen_rows:
self.top_item = 0
self.sel_row = pos
else:
self.sel_row = min(self.screen_rows, self.n_lines)//2 - 1
self.top_item = pos - self.sel_row
if self.top_item >= self.n_lines - self.screen_rows:
self.top_item = self.n_lines - self.screen_rows - 1
self.sel_row = pos - self.top_item - 1
EDIT: 每个职能之后 我称之为“红色屏幕功能”,该功能将屏幕上层的顶点和小段的顶点重新定位。
我在外加了一个伪编码标签,如果有人用一个字不.的版本。