4 artigo/s coa etiqueta Wxpython


wxpython no Ubuntu 16.04 con python3

Para a instalación do wxPython Phoenix no Ubuntu 16.04 dentro dun contorno virtual de Python3. Para elo vasta coa simple orde:

$ pip3 install -U --pre -f https://wxpython.org/Phoenix/snapshot-builds/linux/\
gtk3/ubuntu-16.04  wxPython_Phoenix

Engadir wxpython a virtualenv

Wx non se pode instalar (polo menos de momento) desde pip nun contorna virtual de python (virtualenv). Máis dangtrinh danos unha solución para este caso.

Trátase de instalar desde apt o paquete wx, no meu caso foi:

 $ sudo apt-get install python-wxgtk3.0

E unha vez instalado faise unha ligazón simbólica á contorna virtual:

$ ln -s /usr/lib/python2.7/site-packages/wx* /home/usuario/.virtualenvs/meu-env/lib/python2.7/site-packages/

Dependendo da distribución ou versión tamén pode ser (por exemplo ubuntu 16.04 e debian stretch):

$ ln -s /usr/lib/python2.7/dist-packages/wx* /home/usuario/.virtualenvs/meu-env/lib/python2.7/site-packages/

Pasar argumentos no Bind con wxPython

Sobre isto atopei esta resposta en stackoverflow a cal me pareceu moi elegante.

A primeira proposta é facer uso de lambda, que emvolba a función e pase outro argumento non especifico de WX:

button = wx.Button(self, 10, "Default Button", (20, 20))
        self.Bind(wx.EVT_BUTTON, lambda event: self.on_click(event, 'algun_valor'), button)

def on_click(self, event, somearg):
	 pass

No caso de que sexa algo moi recorrente fai a proposta dunha función de propósito xeral:

class foo(whateverwxobject):
    def better_bind(self, type, instance, handler, *args, **kwargs):
        self.Bind(type, lambda event: handler(event, *args, **kwargs), instance)

    def __init__(self):
        self.better_bind(wx.EVT_BUTTON, b, self.on_click, 'algun_valor')

Establecer orde de tabulación personalizada con wxpython

Nas wxpython, a orde de tabulación por defecto, é a orde de creacións dos diferentes controis. Cando queremos mudar a orde de tabulación despois de crear os controis, podemos empregar o seguinte xeito que deixo aquí para telo a man:

order = (control_1, control_2, control_3...)
for i in xrange(len(order) - 1):
    order[i+1].MoveAfterInTabOrder(order[i])

Fonte: http://wiki.wxpython.org/Getting%20Started