Bir mobil cihazlar için bir liste uygulamak gerekir. sadece ilgili kontroller yukarı ve aşağı ok tuşlarını bulunmaktadır. , Bir satır highighted edilmelidir ekrana (screen_rows) sığacak şekilde listbox listeden öğelerin sayısı kadar satır göstermesi gerekir (sel_row) ve ilk öğe aşağı ok vurgulanmış veya edildiğinde kullanıcı okunu yukarı vurursa ekran sarmak gerekir son öğe vurgulanmış ise (yani son madde görüntülenir ve ilk maddesi seçildiğinde kullanıcı yukarı vurursa vurgulanmalıdır). Yukarı ok önceki öğeyi vurgular ve aşağı ok sonraki öğeyi vurgular.
Ben birlikte birşeyler koyduk ama testlerde şey kaçırdığınızı endişe duyuyorum. Orada süzer yaygınlığı göz önüne alındığında, bunun için standart bir yolu olmalı.
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
DÜZENLEME: Her işlev sonra vurgulanan üst ve sel-satırdaki top_item ekrana yeniden çizer bir yeniden çizme ekran işlevini çağırır.
Birinin piton değil şeyin bir sürüme sahip durumda bir sözde kod etiketi, ekledik.













