English 中文(简体)
执行清单框
原标题:Implement a listbox
  • 时间:2009-10-20 13:24:01
  •  标签:

我需要安装一个移动箱。 唯一的相关控制是 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: 每个职能之后 我称之为“红色屏幕功能”,该功能将屏幕上层的顶点和小段的顶点重新定位。

我在外加了一个伪编码标签,如果有人用一个字不.的版本。

最佳回答

很少有灰色方案执行清单箱——它们通常刚刚从现有的工具包中回收。 这可能说明为什么没有真正的交叉工具“标准”!

根据你的代码,我想到set_pos系指在填写up_keydown_key之后被称作正确(你没有说明这一点)。

我的主要担忧是您的两条<条码>_key 例行公事之间的重复和不对称。 诚然,鉴于你的幽灵在顶点上和缩小钥匙上非常相似,你希望把“增量”论点的单一功能,即+1或-1。 这一共同职能首先可以做到<条码>。 仍然罚款,即<代码>。 页: 1 sel_row < self.top_item + Self. Screen_rows; otherwise address the cases where sel_row has out to the present show region, by Adaptation Self.top_item, outing if that causes no need to summaryaround, or final treatment the Packaround cases.

我非常希望通过反复使用“某些需要的国家机会”的形式来应用“相对比nes”;如果事情现在是罚款,回归”而不是逻辑上更为复杂的“如果做一件简单的事情,那就会做简单的事情;如果需要一点比较复杂但不是可怕的话,那么复杂的事情就会发生;否则,如果我们处理一个真正复杂的问题,则更容易发生错误,更难以跟踪。

问题回答

暂无回答




相关问题
热门标签