Foros del Web » Programando para Internet » Python »

Autocompletar tomando los datos de una tabla

Estas en el tema de Autocompletar tomando los datos de una tabla en el foro de Python en Foros del Web. Buenas, vi este ejemplo: http://wiki.wxpython.org/Combo%20Box%20that%20Suggests%20Options Se puede adaptar ese ejemplo para que la lista de datos sea leída de una tabla de una base de ...
  #1 (permalink)  
Antiguo 08/12/2012, 16:53
 
Fecha de Ingreso: noviembre-2012
Mensajes: 111
Antigüedad: 12 años
Puntos: 6
Autocompletar tomando los datos de una tabla

Buenas, vi este ejemplo:

http://wiki.wxpython.org/Combo%20Box%20that%20Suggests%20Options

Se puede adaptar ese ejemplo para que la lista de datos sea leída de una tabla de una base de datos?

Es decir, supongo que sería primero leer la tabla de la base de datos y cargarla en una lista (de nombre choices en nuestro ejemplo), luego ordenarla y recién allí aplicar el resto del código eliminando la línea

choices = ['grandmother', 'grandfather', 'cousin', 'aunt', 'uncle', 'grandson', 'granddaughter']

lo que no entiendo es que hacer con

for relative in ['mother', 'father', 'sister', 'brother', 'daughter', 'son']:
choices.extend(self.derivedRelatives(relative))





Código:
import wx

class PromptingComboBox(wx.ComboBox) :
    def __init__(self, parent, value, choices=[], style=0, **par):
        wx.ComboBox.__init__(self, parent, wx.ID_ANY, value, style=style|wx.CB_DROPDOWN, choices=choices, **par)
        self.choices = choices
        self.Bind(wx.EVT_TEXT, self.EvtText)
        self.Bind(wx.EVT_CHAR, self.EvtChar)
        self.Bind(wx.EVT_COMBOBOX, self.EvtCombobox)
        self.ignoreEvtText = False

    def EvtCombobox(self, event):
        self.ignoreEvtText = True
        event.Skip()

    def EvtChar(self, event):
        if event.GetKeyCode() == 8:
            self.ignoreEvtText = True
        event.Skip()

    def EvtText(self, event):
        if self.ignoreEvtText:
            self.ignoreEvtText = False
            return
        currentText = event.GetString()
        found = False
        for choice in self.choices :
            if choice.startswith(currentText):
                self.ignoreEvtText = True
                self.SetValue(choice)
                self.SetInsertionPoint(len(currentText))
                self.SetMark(len(currentText), len(choice))
                found = True
                break
        if not found:
            event.Skip()

class TrialPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, wx.ID_ANY)

        choices = ['grandmother', 'grandfather', 'cousin', 'aunt', 'uncle', 'grandson', 'granddaughter']
        for relative in ['mother', 'father', 'sister', 'brother', 'daughter', 'son']:
            choices.extend(self.derivedRelatives(relative))

        cb = PromptingComboBox(self, "default value", choices, style=wx.CB_SORT)

    def derivedRelatives(self, relative):
        return [relative, 'step' + relative, relative + '-in-law']


if __name__ == '__main__':
    app = wx.App()
    frame = wx.Frame (None, -1, 'Demo PromptingComboBox Control', size=(400, 50))
    TrialPanel(frame)
    frame.Show()
    app.MainLoop()
  #2 (permalink)  
Antiguo 08/12/2012, 17:07
 
Fecha de Ingreso: noviembre-2012
Mensajes: 111
Antigüedad: 12 años
Puntos: 6
Respuesta: Autocompletar tomando los datos de una tabla

Me respondo yo mismo je je je

muy interesante este foro, encontré este hilo

http://www.forosdelweb.com/f130/problema-para-ordenar-listas-python-1025961/

y creo que podemos aplicar la solución propuesta por el forista razpeitia

es decir, en mi caso sería crear un archivo de texto, en cada línea una palabra por ejemplo:

BRASIL
MEXICO
ARGENTINA
PERU
BOLIVIA

y luego usar algo como esto:

Código:
# -*- coding: cp1252 -*-
import csv

my_list = []
with open('ordenolista.txt', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter='|')
#    reader.next() # Ignore headers
    for row in reader:
        my_list.append((str(row[0])))

my_list.sort()
for x in my_list:
    print x
en mi caso como el archivo no tiene "headers" anulo esa línea



Un comentario aparte.... minutos después de haber posteado aquí en el foro busco en Google:

PromptingComboBox

y ya aparece en la lista de búsquedas este mismo hilo !!

Dejo el código por si a alguien le sirve

PREGUNTA

Cómo cambio el ancho del campo del ComboBox?

Última edición por tecafede; 08/12/2012 a las 17:25
  #3 (permalink)  
Antiguo 15/12/2012, 21:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Autocompletar tomando los datos de una tabla

De acuerdo a este grupo. No, no existe forma de ajustar el ancho de un ComboBox, es por eso que ComboBoxCtrl existe.
  #4 (permalink)  
Antiguo 17/12/2012, 07:14
 
Fecha de Ingreso: noviembre-2012
Mensajes: 111
Antigüedad: 12 años
Puntos: 6
Respuesta: Autocompletar tomando los datos de una tabla

Cita:
Iniciado por razpeitia Ver Mensaje
De acuerdo a [URL="https://groups.google.com/forum/?fromgroups=#!topic/wxpython-users/9d38MHfGS-U"]este grupo[/URL]. No, no existe forma de ajustar el ancho de un ComboBox, es por eso que ComboBoxCtrl existe.
Gracias!

Etiquetas: autocompletado, wxpython
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:52.