Foros del Web » Programando para Internet » Python »

Dos problemas

Estas en el tema de Dos problemas en el foro de Python en Foros del Web. Buenas fdw , como siempre que tengo una duda que no puedo resolver yo mismo acudo a este gran foro xD. En este caso tengo ...
  #1 (permalink)  
Antiguo 29/07/2010, 16:07
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 10 meses
Puntos: 6
Dos problemas

Buenas fdw, como siempre que tengo una duda que no puedo resolver yo mismo acudo a este gran foro xD.

En este caso tengo 2 preguntas:
Estoy usando GTK y PyWebKit para hacer un navegador web, por ahora va bien pero tengo un problema:
  1. Como puedo hacer para insertar algo adentro de un campo de texto? por ejemplo firefox tiene una flecha hacia abajo adentro del campo de texto, y una estrella, como se hace algo asi?
  2. Como puedo hacer para saber cuando alguien presiona una tecla y que tecla es?
Desde ya, muchas gracias por su respuesta
__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #2 (permalink)  
Antiguo 29/07/2010, 16:50
 
Fecha de Ingreso: enero-2010
Mensajes: 21
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Dos problemas

Holas
para la 1 con gtk.Entry() la tienes
aqui un codigo de un navegador muuuuy sencillo que encontre por ahi
Código Python:
Ver original
  1. import sys
  2. import gtk
  3. import webkit
  4.  
  5. DEFAULT_URL = 'http://www.google.com'
  6.  
  7. class SimpleBrowser:
  8.  
  9.     def __init__(self):
  10.         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  11.         self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS)
  12.         self.window.connect('delete_event', self.close_application)
  13.         self.window.set_default_size(800, 600)
  14.  
  15.         vbox = gtk.VBox(spacing=5)
  16.         vbox.set_border_width(5)
  17.  
  18.         self.txt_url = gtk.Entry()
  19.         self.txt_url.connect('activate', self._txt_url_activate)
  20.  
  21.         self.scrolled_window = gtk.ScrolledWindow()
  22.         self.webview = webkit.WebView()
  23.         self.scrolled_window.add(self.webview)
  24.  
  25.         vbox.pack_start(self.txt_url, fill=False, expand=False)
  26.         vbox.pack_start(self.scrolled_window, fill=True, expand=True)
  27.         self.window.add(vbox)
  28.  
  29.     def _txt_url_activate(self, entry):
  30.         self._load(entry.get_text())
  31.  
  32.     def _load(self, url):
  33.         self.webview.open(url)
  34.  
  35.     def open(self, url):
  36.         self.txt_url.set_text(url)
  37.         self.window.set_title('SimpleBrowser - %s' % url)
  38.         self._load(url)
  39.  
  40.     def show(self):
  41.         self.window.show_all()
  42.  
  43.     def close_application(self, widget, event, data=None):
  44.         gtk.main_quit()
  45.  
  46. if __name__ == '__main__':
  47.     if len(sys.argv) > 1:
  48.         url = sys.argv[1]
  49.     else:
  50.         url = DEFAULT_URL
  51.  
  52.     # PyWebkitGTK necesita habilitar el soporte de los hilos en PyGTK
  53.     gtk.gdk.threads_init()
  54.     browser = SimpleBrowser()
  55.     browser.open(url)
  56.     browser.show()
  57.     gtk.main()

y para el 2, de gtk no se casi nada pero encontre este codigo que te serviria

Código Python:
Ver original
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. import os
  5. import sys
  6.  
  7. #gtk
  8. import pygtk
  9. if sys.platform != 'win32':
  10.     pygtk.require('2.0')
  11. import gtk
  12. import gobject
  13.  
  14.  
  15. class WinTest:
  16.     """Main Window"""
  17.  
  18.     def __init__(self):
  19.         """test"""
  20.         #build the window
  21.         self.winMain = gtk.Window()
  22.         #set window properties
  23.         self.winMain.set_events(
  24.             gtk.gdk.KEY_PRESS_MASK |
  25.             gtk.gdk.KEY_RELEASE_MASK)
  26.         print "events=",self.winMain.get_events()
  27.         self.winMain.connect('key-press-event', self.on_winMain_key_press)
  28.         self.winMain.connect('key-release-event', self.on_winMain_key_press)
  29.         self.winMain.connect('delete-event', self.on_winMain_delete_event)
  30.         self.winMain.set_size_request(300, 400)
  31.         self.winMain.show()
  32.  
  33.     def on_winMain_key_press(self, widget, event, *args):
  34.         """handle keyboard events"""
  35.         keyname = gtk.gdk.keyval_name(event.keyval).upper()
  36.         if event.type == gtk.gdk.KEY_PRESS:
  37.             if keyname == 'ESCAPE':
  38.                 self.on_winMain_delete_event()
  39.             else:
  40.                 print "key press=", keyname
  41.         elif event.type == gtk.gdk.KEY_RELEASE:
  42.             print "key release=", keyname
  43.         return False
  44.  
  45.     def on_winMain_delete_event(self, *args):
  46.         """done, quit the application"""
  47.         #exit gtk loop
  48.         gtk.main_quit()
  49.         return False
  50.  
  51.  
  52. if __name__ == '__main__':
  53.     #instantiate main GUI window class
  54.     app = WinTest()
  55.     #and... go...
  56.     gtk.main()
Saludos
  #3 (permalink)  
Antiguo 29/07/2010, 16:59
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Dos problemas

Gracias por la respuesta tan rapida, el segundo me sirvio, pero el problema del primero es ese exactamente, yo ya hice el campo de texto con gtk.Entry pero no se como insertar algo adentro de el.
Y el codigo del navegador que me pasaste tambien me sirvio, aunque ya habia hecho las funciones que tiene ahi xD
__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros

Etiquetas: dos
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 09:18.