Hola Antonio y lista:

Prueba esto que acabo de crear en base a tu consulta.
A mi me responde a la tecla Retorno (ubuntu 20.04 con python 3.8.10)

Ejecútalo desde un terminal
$ python3 prueba_listbox.py



# -*- coding: utf-8 -*-

###########################################################################
## Python code generated with wxFormBuilder (version 3.9.0 Jun 11 2020)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc

###########################################################################
## Class MyFrame1
###########################################################################

class MyFrame1 ( wx.Frame ):

    def __init__( self, parent ):
        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

        self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )

        bSizer1 = wx.BoxSizer( wx.VERTICAL )

        self.m_panel1 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
        bSizer2 = wx.BoxSizer( wx.VERTICAL )

        m_listBox1Choices = []
        self.m_listBox1 = wx.ListBox( self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_listBox1Choices, 0 )
        bSizer2.Add( self.m_listBox1, 1, wx.ALL|wx.EXPAND, 5 )


        self.m_panel1.SetSizer( bSizer2 )
        self.m_panel1.Layout()
        bSizer2.Fit( self.m_panel1 )
        bSizer1.Add( self.m_panel1, 1, wx.EXPAND |wx.ALL, 5 )


        self.SetSizer( bSizer1 )
        self.Layout()

        self.Centre( wx.BOTH )

        # Connect Events
        self.m_listBox1.Bind( wx.EVT_KEY_DOWN, self.test )

    def __del__( self ):
        pass


    # Virtual event handlers, overide them in your derived class
    def test( self, event ):
        print("ddd")
        event.Skip()


###########################################################################
## Class MyPanel1
###########################################################################

class MyPanel1 ( wx.Panel ):

    def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):         wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )


    def __del__( self ):
        pass

if __name__ == '__main__':
    app = wx.PySimpleApp()
    view = MyFrame1(None)
    view.Show()
    app.MainLoop()




Dani

O 24/08/21 ás 17:47, Antonio Cascales escribiu:
Hola a todos:

    Me presento. Mi nombre es Antonio Cascales, y aunque llevo tiempo
siguiendo la actividad de la lista, es la primera vez que escribo a
ella.

    Os escribo porque quisiera haceros una consulta relativa a Python y
la librería WXPython.

    Estoy aprendiendo a utilizarla y a diseñar interfaces gráficas con
ella, y me estoy enfrentando a un problema que no entiendo, ni sé
porqué ocurre.

    Estoy intentando añadir un evento EVT_KEY_DOWN a un ListBox, pero
me encuentro con que pese a que lo vinculo bien con el método, no
consigo que reaccione a la tecla RETURN cuando la pulso.

    Sin embargo, si capturo la tecla espacio, sí funciona.

    Sé que los ListBox tienen sus propios eventos, y que el más
adecuado a lo que yo necesito es el EVT_LIST_BOX_DCLICK, pero necesito
obligatoriamente que sea mediante teclado. De ahí intentarlo con
EVT_KEY_DOWN.

    ¿Alguno podríais indicarme porqué ocurre esto y si hay forma de 
solucionarlo?

    Estoy tratando de hacer un pequeño programa que contenga una lista
de elementos, y que escriba en un área de texto una cadena al pulsar
INTRO encima de uno de sus elementos.

    Si alguien puede arrojar luz sobre esta cuestión, se lo
agradecería. Y disculpad si algo no queda claro, pero mis
conocimientos son limitados en la materia.

    Un saludo,



_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es

Responder a