Интерфейс клавиатуры для списка wxPython - PullRequest
2 голосов
/ 15 декабря 2010

Я использую список wxPython в Windows, чтобы получить выбор от пользователя, и я хотел бы, чтобы они могли выбирать элемент с помощью клавиши ENTER, как если бы они дважды щелкнули.Я знаю, как сделать это на C или C ++, используя Windows API напрямую, но не могу найти, как это сделать с помощью wxPython.Кто-нибудь знает как?Кажется очевидной вещью, которую хочется сделать.

Ответы [ 3 ]

1 голос
/ 16 декабря 2010

Простой ответ: wx.ListBox не поддерживает это. Попробуйте вместо этого использовать один столбец wx.ListCtrl (в режиме отчета).

1 голос
/ 26 сентября 2014

Это работает для меня, ключ для Bind EVT_KEY_UP, а не EVT_KEY_DOWN:

import wx

class myListBoxDemo(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent=parent, title="testing ListBox right-click")
        self.panel = wx.Panel(self, -1)
        sizer = wx.BoxSizer(wx.VERTICAL)
        self.myListBox = wx.ListBox(self.panel,style=wx.LB_HSCROLL|wx.LB_SINGLE)
        self.myListBox.Bind(wx.EVT_KEY_UP, self.OnKeyDownSelectedList)

        self.myListBox.Append('item 1')
        self.myListBox.Append('item 2')
        self.myListBox.Append('item 3')
        self.myListBox.Append('item 4')

        sizer.AddF(self.myListBox, wx.SizerFlags(1).Expand())
        self.panel.SetSizer(sizer)

    def OnKeyDownSelectedList(self, event):
        print "KeyCode: %d" % event.GetKeyCode()
        print "ListBox Item Index: %d" % event.GetEventObject().GetSelection()

import wx.lib.mixins.inspection as wit
class AppWInspection(wx.App, wit.InspectionMixin):
    def OnInit(self):
        self.Init()  # enable Inspection tool
        return True

if __name__ == "__main__":
    app = AppWInspection()    
    f = myListBoxDemo(None)
    f.Show()
    app.MainLoop()  
1 голос
/ 15 декабря 2010

Может быть, я упускаю какой-то нюанс, не было много информации, чтобы продолжить, но похоже, что вы могли бы сделать это, перехватывая событие keydown, сопоставляя его с вводом, а затем вызывая вашу функцию on_doubleclick. Если нет неявной обработки двойного щелчка, вы должны быть готовы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...