В настоящее время я работаю над окончательным проектом для средней школы wx Python и столкнулся с другой проблемой. Я хотел бы связать записи комбинаций клавиш (например, CTRL + S ...) с моими функциями, но не могу достичь результата, который бы соответствовал моим ожиданиям.
Я пробовал это, но нажатия клавиш не были связаны.
accelnum = 2
accelerators = [wx.AcceleratorEntry() for x in range(accelnum)]
accelerators[0].Set(wx.ACCEL_CTRL, ord('S'), 'save')
accelerators[1].Set(wx.ACCEL_CTRL, ord('E'), 'export')
accel=wx.AcceleratorTable(accelerators)
self.SetAcceleratorTable(accel)
def save(self, event):
# some code...
def export(self, event):
# some other code...
Я также пытался установить ID на тот же идентификатор, который я установил для инструментов панели инструментов, но он говорит, что здесь id не является допустимым аргументом.
Большое спасибо за все советы. R
РЕДАКТИРОВАТЬ
Для всех, кто интересуется, что может быть не так, я также использовал wx.EVT_CHAR_HOOK для обнаружения клавиши «DEL». Когда я переписывал свой класс во второй раз, я забыл добавить EVT_CHAR_HOOK, и это сработало. Пока я не добавил это EVT_CHAR_HOOK назад. Это означает, что вы не можете использовать его одновременно. Итак, что я сделал дальше:
ID_SAVE = wx.NewIdRef()
ID_EXPORT = wx.NewIdRef()
ID_DELETE = wx.NewIdRef()
accelerators = [wx.AcceleratorEntry() for x in range(3)]
accelerators[0].Set(wx.ACCEL_CTRL, ord('S'), ID_SAVE)
accelerators[1].Set(wx.ACCEL_CTRL, ord('E'), ID_EXPORT)
accelerators[2].Set(wx.ACCEL_NORMAL, wx.WXK_DELETE, ID_DELETE)
, чтобы назначить также мою кнопку удаления, и теперь она работает