Wx python ScrollBar - PullRequest
       71

Wx python ScrollBar

0 голосов
/ 11 января 2020

Я хочу, чтобы полоса прокрутки моего wx.ListCtrl автоматически отключалась, когда новый элемент добавлялся в список, а полоса прокрутки становилась длиннее. Вот как я создаю wx.ListCtrl

import wx

app = wx.App()
frame = wx.Frame(None, -1, title='2', pos=(0, 0), size=(500, 500))
frame.Show(True)
app.SetTopWindow(frame)
message_list = wx.ListCtrl(frame, size=(200, 200), pos=(0, 0),
                       style=wx.LC_REPORT | wx.BORDER_SUNKEN)
message_list.InsertColumn(0, 'Chat: ', width=150)
for i in range(15):
   message_list.InsertItem(i, "name" + str(i))

### I want that after this loop, the scroll bar will be at the end of the list (Name 14)

app.MainLoop()

1 Ответ

1 голос
/ 11 января 2020

Select (self, idx, on = 1)
Выбирает / отменяет выбор элемента.
& EnsureVisible(n) удостоверяется, что выбранный элемент видим, то есть прокручивает элемент управления списком.

Так что это будет работать:

import wx

app = wx.App()
frame = wx.Frame(None, -1, title='2', pos=(0, 0), size=(500, 500))
frame.Show(True)
app.SetTopWindow(frame)
message_list = wx.ListCtrl(frame, size=(200, 200), pos=(0, 0),
                            style=wx.LC_REPORT | wx.BORDER_SUNKEN)
message_list.InsertColumn(0, 'Chat: ', width=150)
for i in range(30):
    message_list.InsertItem(i, "name" + str(i))

msg_endpoint = message_list.GetItemCount() - 1
message_list.Select(msg_endpoint,1)    #Select last item
message_list.EnsureVisible(msg_endpoint)
### I want that after this loop, the scroll bar will be at the end of the list (Name 14)

app.MainLoop()

Примечание. Используйте message_list.Select(i,0) для отмены выбора элемента (i)
Полоса прокрутки становится видимой только при необходимости.

enter image description here

...