elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Código-PyQT4] IconFinder - JaAViEr | 0x5d
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Código-PyQT4] IconFinder - JaAViEr | 0x5d  (Leído 3,479 veces)
0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
[Código-PyQT4] IconFinder - JaAViEr | 0x5d
« en: 31 Octubre 2013, 12:01 pm »

Hola, buen día !

Hoy navegando por la web "Daw-Labs", me topé con que el compañero WindHack creó una aplicación para buscar iconos en https://www.iconfinder.com . Intenté hacerlo igual visualmente, pero en PyQT4 (además me sirvió de práctica) espero os guste :

Código
  1. # -*- coding: utf-8 -*-
  2. # Autor: 0x5d | JaAViEr
  3. # Twitter: @0x5d
  4.  
  5. from PyQt4 import QtGui, QtCore, QtWebKit
  6. import sys
  7. import urllib
  8. import re
  9.  
  10. try:
  11.    _fromUtf8 = QtCore.QString.fromUtf8
  12. except AttributeError:
  13.    def _fromUtf8(s):
  14.        return s
  15.  
  16.  
  17. class programa(QtGui.QWidget):
  18.  
  19. def __init__(self, parent=None):
  20. QtGui.QWidget.__init__(self, parent)
  21. self.msg = QtGui.QMessageBox(self)
  22. self.msg.setWindowTitle(_fromUtf8("Información"))
  23. self.setWindowTitle(_fromUtf8('IconFinder PyQT4 Version | 0x5d'))
  24. self.resize(529, 440)
  25. self.input_busqueda = QtGui.QLineEdit(self)
  26. self.input_busqueda.setGeometry(10, 20, 371, 20)
  27. self.boton_buscar = QtGui.QPushButton("Buscar", self)
  28. self.boton_buscar.setGeometry(390, 10, 61, 41)
  29. self.boton_guardar = QtGui.QPushButton("Guardar", self)
  30. self.boton_guardar.setGeometry(455, 10, 61, 41)
  31. self.connect(self.boton_guardar, QtCore.SIGNAL("clicked()"), self.guardar)
  32. #TABLA ORDENADORA DE RESULTADOS
  33. self.tabla = QtGui.QTreeWidget(self)
  34. self.tabla.setGeometry(0, 195, 530, 246)
  35. self.tabla.headerItem().setText(0, "#")
  36. self.tabla.headerItem().setText(1, "Id.")
  37. self.tabla.headerItem().setText(2, _fromUtf8("Tamaño"))
  38. self.tabla.headerItem().setText(3, "Url")
  39. #FIN TABLA
  40. self.grupo_options = QtGui.QGroupBox(self)
  41. self.grupo_options.setGeometry(10, 47, 291, 101)
  42. self.icon_perpage_label = QtGui.QLabel(self.grupo_options)
  43. self.icon_perpage_label.setGeometry(20, 30, 90, 16)
  44. self.icons_perpage_spin = QtGui.QSpinBox(self.grupo_options)
  45. self.icons_perpage_spin.setGeometry(113, 27, 47, 22)
  46. self.icons_perpage_spin.setProperty("value", 20)
  47. self.minimum_size_label = QtGui.QLabel(self.grupo_options)
  48. self.minimum_size_label.setGeometry(20, 70, 100, 13)
  49. self.minimum_size_spin = QtGui.QSpinBox(self.grupo_options)
  50. self.minimum_size_spin.setMaximum(190)
  51. self.minimum_size_spin.setGeometry(113, 65, 47, 22)
  52. self.minimum_size_spin.setProperty("value", 16)
  53. self.maximum_size_label = QtGui.QLabel(self.grupo_options)
  54. self.maximum_size_label.setGeometry(170, 70, 70, 13)
  55. self.maximum_size_spin = QtGui.QSpinBox(self.grupo_options)
  56. self.maximum_size_spin.setGeometry(241, 67, 42, 22)
  57. self.maximum_size_spin.setMaximum(190)
  58. self.maximum_size_spin.setProperty("value", 40)
  59. self.grupo_preview = QtGui.QGroupBox(self)
  60. self.grupo_preview.setGeometry(320, 47, 201, 141)
  61. self.total_results_label = QtGui.QLabel(self)
  62. self.total_results_label.setGeometry(20, 145, 81, 21)
  63. self.total_results_label.setStyleSheet("font-weight: bold;")
  64. self.numero_results_label = QtGui.QLabel(self)
  65. self.numero_results_label.setGeometry(100, 145, 31, 21)
  66. self.numero_results_label.setStyleSheet("font-weight: bold;")
  67. self.viewing_page_label = QtGui.QLabel(self)
  68. self.viewing_page_label.setGeometry(132, 145, 91, 21)
  69. self.viewing_page_label.setStyleSheet("font-weight: bold;")
  70. self.number_vpage_label = QtGui.QLabel(self)
  71. self.number_vpage_label.setGeometry(190, 145, 51, 21)
  72. self.number_vpage_label.setStyleSheet("font-weight: bold;")
  73. self.go_page_label = QtGui.QLabel(_fromUtf8("Ir a página:"), self)
  74. self.go_page_label.setGeometry(20, 170, 71, 16)
  75. self.go_page_label.setStyleSheet("font-weight: bold;")
  76. self.go_page_spin = QtGui.QSpinBox(self)
  77. self.go_page_spin.setGeometry(89, 168, 42, 22)
  78.  
  79. self.grupo_options.setTitle("Opciones")
  80. self.icon_perpage_label.setText(_fromUtf8("Iconos por página:"))
  81. self.minimum_size_label.setText(_fromUtf8("Tamaño mínimo    :"))
  82. self.maximum_size_label.setText(_fromUtf8("Tam. máximo:"))
  83. self.grupo_preview.setTitle("Prevista")
  84. self.total_results_label.setText("Resultados:")
  85. self.numero_results_label.setText("0")
  86. self.viewing_page_label.setText(_fromUtf8("| Página:"))
  87. self.number_vpage_label.setText("0")
  88. self.connect(self.boton_buscar, QtCore.SIGNAL("clicked()"), self.buscar)
  89. self.connect(self.tabla, QtCore.SIGNAL('itemClicked(QTreeWidgetItem*, int)'), self.ver_link)
  90. self.preview = QtWebKit.QWebView(self.grupo_preview)
  91. self.preview.setGeometry(6, 16, 191, 115)
  92. #Twitter Logo
  93. # self.twitter = QtWebKit.QWebView(self)
  94. # self.twitter.setGeometry(280, 0, 121, 80)
  95. # self.twitter.setStyleSheet("background-color: transparent; ")
  96. # self.twitter.setHtml("<center><a href='#' onclick='window.open(\"http://www.google.cl\")'><img src='%s' width=53 height=53 border=0></a></center>" % ("https://cdn3.iconfinder.com/data/icons/follow-me/256/Twitter-64.png"))
  97. self.connect(self.input_busqueda, QtCore.SIGNAL("returnPressed()"), self.buscar)
  98. self.connect(self, QtCore.SIGNAL("closeEvent()"), self.close)
  99.  
  100. def guardar(self):
  101. archivo = QtGui.QFileDialog.getSaveFileName(self,
  102.                self.tr("Guardar Archivo"), ".")
  103. try:
  104. loader = urllib.urlopen(str(self.url)).read()
  105. file = open(archivo, "wb")
  106. file.write(loader)
  107. file.close()
  108. self.msg.setText(_fromUtf8("Tu archivo se guardó con éxito"))
  109. except:
  110. self.msg.setText(_fromUtf8("¡Tu archivo no se pudo guardar!"))
  111. pass
  112. self.msg.exec_()
  113. def ver_link(self, item, i):
  114. self.url = item.text(3)
  115. self.preview.setStyleSheet("background-color: transparent; ")
  116. self.preview.setHtml("<center><img src='%s'></center>" % self.url)
  117.  
  118. def buscar(self):
  119. self.tabla.clear()
  120. q = str(self.input_busqueda.text())
  121. icons_perpage = self.icons_perpage_spin.value()
  122. min_size = self.minimum_size_spin.value()
  123. max_size = self.maximum_size_spin.value()
  124. page = self.go_page_spin.value()
  125. url = urllib.urlopen("https://www.iconfinder.com/xml/search/?q=%s&c=%s&min=%s&max=%s&p=%s&api_key=4c5b276337af418894c87590412e4e39" % (q, icons_perpage, min_size, max_size, page)).read()
  126. x = url.split("<icon>")
  127. id = []
  128. size = []
  129. image = []
  130. for d in x:
  131. for idx in re.findall("<id>(.+?)<\/id>", d):
  132. id.append(idx)
  133. for sizex in re.findall("<size>(.+?)<\/size>", d):
  134. size.append(sizex)
  135. for imagex in re.findall("<image>(.+?)<\/image>", d):
  136. image.append(imagex)
  137. count = 1;
  138. for i, idx, sizex, imagex in zip(range(len(id)), id, size, image):
  139. exec("item_%s = QtGui.QTreeWidgetItem(self.tabla)"%i)
  140. self.tabla.topLevelItem(i).setText(0, str(count))
  141. self.tabla.topLevelItem(i).setText(1, str(idx))
  142. self.tabla.topLevelItem(i).setText(2, str(sizex))
  143. self.tabla.topLevelItem(i).setText(3, str(imagex))
  144. count += 1
  145. self.number_vpage_label.setText(str(page))
  146. self.numero_results_label.setText(str(count-1))
  147.  
  148. app = QtGui.QApplication(sys.argv)
  149. form = programa()
  150. form.show()
  151. app.exec_()


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Código-PyQT4]Extractor de imágenes - JaAViEr(0x5d)
Scripting
0x5d 0 2,069 Último mensaje 24 Diciembre 2011, 23:22 pm
por 0x5d
[Código-PyQT4]Calculadora por secuencias - JaAViEr(0x5d)
Scripting
0x5d 2 2,861 Último mensaje 27 Diciembre 2011, 02:19 am
por 0x5d
[Código-PyQT4]All in one - JaAViEr(0x5d)
Scripting
0x5d 0 2,018 Último mensaje 11 Febrero 2012, 05:11 am
por 0x5d
[Código-PyQT4]Detectar campos de un formulario web - JaAViEr|0x5d
Scripting
0x5d 5 3,481 Último mensaje 9 Abril 2012, 19:39 pm
por Runex
[Código-PyQT4] Escaner de Puertos - JaAViEr | 0x5d
Scripting
0x5d 0 2,146 Último mensaje 31 Octubre 2013, 04:59 am
por 0x5d
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines