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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Duda Python+TK] Sobre variables y funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Duda Python+TK] Sobre variables y funciones  (Leído 3,846 veces)
xassiz_

Desconectado Desconectado

Mensajes: 273


Ich werde dich töten..


Ver Perfil WWW
[Duda Python+TK] Sobre variables y funciones
« en: 25 Febrero 2010, 16:52 pm »

A ver, tengo un problema.

Yo hice un "downloader" por consola y ahora estoy aprendiendo Tkinter y lo quería pasar.

Lo que pasa es que cuando ejecuto el button y me ejecuta la funcion las variables del textbox no me funcionan allá..

Probe haciendo un global pero no funciona, os dejo el code:

Código
  1. #!/usr/bin/env python
  2. #Downloader - by xassiz
  3.  
  4. from Tkinter import *
  5. import re, sys, urllib
  6.  
  7. def descargar():
  8. xassiz = urllib.urlopen(url)
  9. x4ss1z = open(doc,'wb')
  10. xa55iz = xassiz.read()
  11. x4ss1z.write(xa55iz)
  12. xassiz.close()
  13. x4ss1z.close()
  14.  
  15. form = Tk()
  16. form.title('Downloader - by xassiz')
  17. form.minsize(350,75)
  18.  
  19. Nombre = Label(form, text="Downloader")
  20. url = StringVar()
  21. urlTxtBox = Entry(form, textvariable=url, width=60)
  22. doc = StringVar()
  23. docTxtBox = Entry(form, textvariable=doc, width=60)
  24. BotonDescargar = Button(form, text="Descargar", command=descargar, width=20)
  25.  
  26. Nombre.grid()
  27. urlTxtBox.grid()
  28. docTxtBox.grid()
  29. BotonDescargar.grid()
  30.  
  31. form.mainloop()
  32.  

El primer textbox recojo la URL y en el segundo el nombre del nuevo archivo.


Saludos! ;)


En línea



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: [Duda Python+TK] Sobre variables y funciones
« Respuesta #1 en: 25 Febrero 2010, 20:06 pm »

Este ejemplo lo vi hace tiempo:

Código
  1. from Tkinter import *
  2. import os
  3. import urllib
  4. import threading
  5. import time
  6.  
  7. def logs(b):
  8.    f = open('./downloads/log.txt','aw')
  9.    f.write ("Archivo %s" % b + "descargado %s \n" % time.strftime("a Horas: %H:%M:%S en Fecha: %D"))
  10.    f.close()
  11.  
  12.  
  13. def reporthook(blocks_read, block_size, total_size):
  14.    if not blocks_read:
  15.        myapp.lab1["text"] = "conexión Establecida"
  16.        return
  17.    if total_size < 0:
  18.        myapp.lab1["text"] = "Bloques Leidos " % blocks_read
  19.    else:
  20.        amount_read = blocks_read * block_size
  21.        myapp.lab1["text"] = "Faltan: %d Kb para terminar la Descarga" %((total_size/1024) -  (amount_read/1024))
  22.        return
  23.  
  24. class Hilo(threading.Thread ):
  25.    def run ( self ):
  26.        try:
  27.            i = 0
  28.            while i==0:
  29.                c = myapp.text3.get(1.0, 2.0)
  30.                b = c[c.rfind('/',0,len(c))+1:len(c)]
  31.                urllib.urlretrieve("%s" % myapp.text3.get(1.0, 2.0), 'downloads/%s' % b, reporthook=reporthook)
  32.                myapp.lab1["text"] = "ARCHIVO %s DESCARGADO" % b
  33.                logs(b)
  34.  
  35.                myapp.text3.delete(1.0, 2.0)
  36.  
  37.                if myapp.text3.search("http://", 1.0, 1.7):
  38.                    myapp.lab1["text"] = "CONTINUANDO DESCARGA"
  39.                    continue;
  40.                else:
  41.                    myapp.lab1["text"] = "NO HAY URLS PARA DESCARGAR"
  42.                    break;
  43.  
  44.        except:
  45.           myapp.lab1["text"] = "ERROR VERIFIQUE conexión Y DIRECCION URL"
  46.  
  47. class Application(Frame):
  48.  
  49.  
  50.    def limpiar(self):
  51.        myapp.text3.delete(1.0, END)
  52.  
  53.  
  54.    def download(self):
  55.        if os.path.exists("downloads")==0:
  56.            os.makedirs("downloads")
  57.  
  58.        Hilo().start()
  59.  
  60.    def salir(self):
  61.  
  62.        myapp.master.destroy()
  63.        exit()
  64.  
  65.  
  66.    def agregar(self):
  67.  
  68.        myapp.text3.insert(END, myapp.text3.clipboard_get()+"\n")
  69.  
  70.    def createWidgets(self):
  71.  
  72.        self.lab0 = Label(self)
  73.        self.lab0["text"] = "INTRODUCE DIRECCION A DESCARGAR"
  74.        self.lab0["fg"]   = "white"
  75.        self.lab0["bg"]   = "black"
  76.        self.lab0["width"]   = 50
  77.        self.lab0["height"]   = 3
  78.        self.lab0.pack({"side": "top"})
  79.  
  80.  
  81.        self.lab1 = Label(self)
  82.        self.lab1["text"] = "CONTADOR DESCARGA PREPARADO"
  83.        self.lab1["fg"]   = "white"
  84.        self.lab1["bg"]   = "black"
  85.        self.lab1["width"]   = 80
  86.        self.lab1["height"]   = 3
  87.        self.lab1.pack({"side": "top"})
  88.  
  89.  
  90.        self.but1 = Button(self)
  91.        self.but1["text"] = "AGREGAR URL DEL PORTAPAPELES"
  92.        self.but1["fg"]   = "white"
  93.        self.but1["bg"]   = "blue"
  94.        self.but1["width"]   = 30
  95.        self.but1["height"]   = 2
  96.        self.but1["border"]   = 4
  97.        self.but1.grid(row = 10, sticky = E, column = 2, pady = 3)
  98.        self.but1["command"] = self.agregar
  99.        self.but1.pack({"side": "top"})        
  100.  
  101.  
  102.  
  103.        self.text3 = Text(self)
  104.        self.text3["fg"]   = "white"
  105.        self.text3["bg"]   = "black"
  106.        self.text3["width"]   = 80
  107.        self.text3.pack({"side": "top"})
  108.  
  109.  
  110.        self.but2 = Button(self)
  111.        self.but2["text"] = "SALIR"
  112.        self.but2["fg"]   = "white"
  113.        self.but2["bg"]   = "blue"
  114.        self.but2["width"]   = 10
  115.        self.but2["height"]   = 3
  116.        self.but2["border"]   = 4
  117.        self.but2.grid(row = 10, sticky = E, column = 2, pady = 3)
  118.        self.but2["command"] = self.salir
  119.        self.but2.pack({"side": "left"})
  120.  
  121.        self.but3 = Button(self)
  122.        self.but3["text"] = "LIMPIAR LISTA URL'S"
  123.        self.but3["fg"]   = "white"
  124.        self.but3["bg"]   = "blue"
  125.        self.but3["width"]   = 30
  126.        self.but3["height"]   = 3
  127.        self.but3["border"]   = 4
  128.        self.but3.grid(row = 10, sticky = E, column = 2, pady = 3)
  129.        self.but3["command"] = self.limpiar
  130.        self.but3.pack({"side": "left"})
  131.  
  132.  
  133.        self.but4 = Button(self)
  134.        self.but4["text"] = "INICIAR LAS DESCARGAS"
  135.        self.but4["fg"]   = "white"
  136.        self.but4["bg"]   = "blue"
  137.        self.but4["width"]   = 30
  138.        self.but4["height"]   = 3
  139.        self.but4["border"]   = 4
  140.        self.but4.grid(row = 10, sticky = E, column = 2, pady = 3)
  141.        self.but4["command"] =  self.download
  142.        self.but4.pack({"side": "right"})
  143.  
  144.  
  145.    def __init__(self, master=None):
  146.        Frame.__init__(self, master)
  147.        self.pack()
  148.        self.createWidgets()
  149.  
  150.  
  151. myapp = Application()
  152. myapp.master.title("DOWNLOADER EN LINUX - GET LINUX")
  153. myapp.master.geometry("+600+600")
  154. myapp.master.tk_setPalette("black")
  155. myapp.master.resizable(0,0)
  156.  
  157. myapp.mainloop()

Espero te sirva, necesitas trabajar con hilos...


En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
XD YO

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: [Duda Python+TK] Sobre variables y funciones
« Respuesta #2 en: 4 Marzo 2010, 01:15 am »

Tu problema radica en la función descargar:

Citar
Código

#!/usr/bin/env python
#Downloader - by xassiz
 
from Tkinter import *
import re, sys, urllib
 
def descargar():
   xassiz = urllib.urlopen(url) #En ese lugar debería ser xassiz = urllib.urlopen(url.get())
   x4ss1z = open(doc,'wb') #En este lugar  x4ss1z = open(doc.get(),'wb')
   xa55iz = xassiz.read()

Al ser tus variables que almacenan las cadenas "url" y "doc" , necesitas decirle a tkinter que quieres tener acceso a las cadenas almacenadas añadiendo al final del nombre  ".get()"

Pero, tengo que admitirlo, el código de 43H4FH44H45H4CH49H56H45H  no es para un principiante en tkinter; pero esta muy bueno  ;-)
« Última modificación: 4 Marzo 2010, 01:19 am por XD YO » En línea

"Fácilmente aceptamos la realidad, acaso porque intuimos que nada es real"
-Borges -El inmortal
xassiz_

Desconectado Desconectado

Mensajes: 273


Ich werde dich töten..


Ver Perfil WWW
Re: [Duda Python+TK] Sobre variables y funciones
« Respuesta #3 en: 4 Marzo 2010, 21:21 pm »

Gracias, esto era lo que necesitaba xD
En línea



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda sobre el ambito de las variables automaticas
Programación C/C++
Caster 5 2,722 Último mensaje 6 Octubre 2012, 18:00 pm
por rir3760
duda sobre estructuras y funciones
Programación C/C++
asdavid 3 2,569 Último mensaje 29 Noviembre 2012, 00:01 am
por durasno
Duda sobre ficheros en funciones
Programación C/C++
muymuyperdido 4 2,617 Último mensaje 23 Diciembre 2012, 15:43 pm
por muymuyperdido
Duda sobre funciones inline.
Programación C/C++
OmarHack 7 3,996 Último mensaje 28 Marzo 2013, 17:04 pm
por OmarHack
Duda sobre variables y constantes
PHP
Senior++ 2 2,022 Último mensaje 21 Noviembre 2013, 19:48 pm
por Senior++
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines