Scorciatoia da tastiera su Frame in wxPython

Scorciatoia da tastiera su Frame in wxPython

Oggi vediamo come impostare un evento da tastiera su Frame in wxPython.

Quello che vogliamo ottenere è la chiusura del programma premendo i classici Ctrl+Q.

Per fare questo dobbiamo usare l'oggetto AcceleratorTable, che ci permette appunto di specificare una scorciatoia da tastiera per un menu o per un comando.
Quindi in termini di codice:

import wx

class Form(wx.Frame):

    def __init__(self):
        # INIT FRAME
        wx.Frame.__init__(self, None, title = "Python YoutubeDL", size = (500, 70), style = wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
        # EVENTO PER CHIUSURA FRAME
        randomId = wx.NewId()
        self.Bind(wx.EVT_MENU, self.closeProgram, id = randomId)
        closeAccelTbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('Q'), randomId)])
        self.SetAcceleratorTable(closeAccelTbl)

    def closeProgram(self, event):
        self.Close()

Nel costruttore definiamo le proprietò del Frame.

Ad essere sincero non saprei come spiegarvi meglio di così il tutto; una delle cose belle di Python è che facile da capire una volta che lo conosci.

In pratica impostiamo un evento che intercetta Ctrl+Q che richiama la funzione closeProgram.

Notate i parametri passati alla funzione.

Ciao!