Quantcast
Channel: Python Hispano
Viewing all articles
Browse latest Browse all 180

python majibu: [PyGObject] ¿Se puede crear un objeto TextIter desde objetos integer de Python?

$
0
0

Sucede que estoy haciendo una practica con PyGObject para aprender desarrollar apps con él. Estoy armando una aplicación que ejecute una expresión regular y marque las condiciones en el texto que el usuario ingreso anteriormente, algo sencillo y que también necesito, así luce:

alt text

Ahora, cuando tengo coincidencias conforme a la expresión regular, me interesa recoger la tupla m.span() que me la sección dentro del texto a la que corresponde la coincidencia. Sin embargo, al usar el método para aplicar un tag al texto, digamos Gtk.TextIter.apply_tag(tag, 0, 10), me indica la siguiente excepción:

1
2
3
4
5
6
Traceback (most recent call last):
  File "coders/desarrollo/regextrainer/main.py", line 124, in on_txtbff_datos_changedself.txtbff_datos.apply_tag(self.tag_bold,start,end)
  File "/usr/lib/python2.7/site-packages/gi/types.py", line 113, in functionreturninfo.invoke(*args,**kwargs)TypeError: argument start: Expected Gtk.TextIter, but got int

Entonces, parece que necesito un objeto Gtk.TextIter y no un objeto int. El problema es que ya le he dado vueltas a la documentación y no veo como pueda crear un objeto Gtk.TextIter a partir de un objeto integer de python :(

acá el código fuente:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/env python2# coding: utf-8fromgi.repositoryimportGtk,Pango,GdkimportreimportosUI_PATH=os.path.dirname(__file__)classRegextrainer(object):""""""def__init__(self,):""""""## Banderasself.I=Noneself.L=Noneself.M=Noneself.S=Noneself.U=Noneself.builder=Gtk.Builder()self.builder.add_from_file(os.path.join(UI_PATH,"ui","interfaz.glade"))self.builder.connect_signals(self)self.cregex=re.compile("",self.__flags())self.rregex=Noneself.window=self.builder.get_object("window")self.window.show_all()self.txtentr_regex=self.builder.get_object("txtentr_regex")self.txtvw_datos=self.builder.get_object("txtvw_datos")self.txtbff_datos=self.builder.get_object("txtbff_datos")self.txtvw_datos.set_buffer(self.txtbff_datos)## Pangoself.tag_bold=self.txtbff_datos.create_tag("bold",weight=Pango.Weight.BOLD)def__flags(self):""" Retorna la sumatoria de las banderas activadas"""returnsum([re.Iifself.Ielse0,re.Lifself.Lelse0,re.Mifself.Melse0,re.Sifself.Selse0,re.Uifself.Uelse0],0)defon_ckb_ignorecase_toggled(self,checkbutton):"""        Arguments:        - `self`:        - `checkbutton`:"""self.I=notself.Idefon_ckb_locale_toggled(self,checkbutton):"""        Arguments:        - `self`:        - `checkbutton`:"""self.L=notself.Ldefon_ckb_multiline_toggled(self,checkbutton):"""        Arguments:        - `self`:        - `checkbutton`:"""self.M=notself.Mdefon_ckb_dotall_toggled(self,checkbutton):""""""self.S=notself.Sdefon_ckb_unicode_toggled(self,checkbutton):""""""self.U=notself.Udefdestroy(self,window):"""        Arguments:        - `self`:        - `window`:"""Gtk.main_quit()defon_txtentr_regex_changed(self,textentry):"""        Arguments:        - `self`:"""# debemos recibir la cadena con la expresión regular# y luego usarla sobre el texto en la caja de textoregex=self.txtentr_regex.get_text()self.cregex=re.compile(regex,self.__flags())defon_txtbff_datos_changed(self,textbuffer):""""""start=self.txtbff_datos.get_start_iter()end=self.txtbff_datos.get_end_iter()self.rregex=self.cregex.finditer(self.txtbff_datos.get_text(start,end,True))# Borramos todos los tags dentro del texto,# suponiendo que encontráramos algo...ifself.rregex:self.txtbff_datos.remove_all_tags(start,end)# repasamos todas las coincidenciasformatobjinself.rregexifself.rregexelse[]:start,end=matobj.span()self.txtbff_datos.apply_tag(self.tag_bold,start,end)defmain():""""""app=Regextrainer()Gtk.main()if__name__=="__main__":main()

alguna ayuda? :)


Viewing all articles
Browse latest Browse all 180

Trending Articles


UPDATE SC IDOL: TWO BECOME ONE


Tinkerbell para colorear, pintar e imprimir


Pokemon para colorear


Arbol genealogico para colorear


Sapos para colorear


Christmas Patama Quotes For Everyone


Re:Mutton Pies (jameskoiman)


Hagibis (1946) by Francisco V. Coching


Re: lwIP PIC32 port - new title : CycloneTCP a new open source stack for...


Vimeo 3.18.0 by Vimeo Inc