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
| | |-+  Icono en python con tkinter
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Icono en python con tkinter  (Leído 4,809 veces)
Jhon2019

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Icono en python con tkinter
« en: 24 Enero 2019, 18:46 pm »

Hola, estoy aprendiendo python y e creado un programa con python y tkinter.
Tengo un problema con el icono, escribo este codigo en el CMD:      pyinstaller llaves.py -i cuadrado.ico --noconsole --onefile

Crea el .exe con todo su icono pero a al abrirlo " Failed to execute script llaves "




Cuando copio el icono estrella.ico (el icono lo puse con tkinter) junto al exe, si se ejecuta perfectamente con su icono.



El exe Depende del icono que esta en el script que he creado.

¿Alguien sabe que código me falta para que no dependa del estrella.ico?

Gracias


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.164



Ver Perfil
Re: Icono en python con tkinter
« Respuesta #1 en: 25 Enero 2019, 03:26 am »

Saludos,

- Cuando creas un fichero .exe sólido, este se descomprime en %temp% y se ejecuta, PERO las rutas relativas serán del .exe sólido original, por esta razón tus recursos enlazados por rutas relativas deben de estar junto al .exe sólido.

- Puedes agregar recursos adicionales así:

Código
  1. pyinstaller llaves.py -i cuadrado.ico --noconsole --onefile --add-data estrella.ico;.

- Entonces estrella.ico se descomprimirá en %temp%, ahora solo queda solucionar el problema de las rutas relativas.

-- Utiliza esta condicional para hallar la ruta completa de la carpeta descomprimida en el %temp% para especificar la ruta correcta de estrella.ico:

Código
  1. import sys
  2. if getattr(sys, 'frozen', False) :
  3.  app.master.iconbitmap(sys._MEIPASS + '\\estrella.ico')
  4. else :
  5.  app.master.iconbitmap('estrella.ico')

================
Referencias:
https://pyinstaller.readthedocs.io/en/stable/usage.html#what-to-bundle-where-to-search
https://pyinstaller.readthedocs.io/en/stable/runtime-information.html


En línea

Jhon2019

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Icono en python con tkinter
« Respuesta #2 en: 26 Enero 2019, 23:01 pm »

Gracias EdePc por ayudarme.
¿Funcionara el exe si lo paso a otro ordenador?
mi objetivo es que funcione en cualquier ordenador con windows y sin python.

te dejo .py y .spec,
No tuve problemas al aprender python y tkinter pero poner un pequeño icono en la ventana esta complicado.


py:
===============================================

from tkinter import *

raiz=Tk()
raiz.title("CRACKME KEYGEN")
raiz.iconbitmap("estrella.ico")


def generar():
    
    user=vartxt1.get()
    sum=0
    largo=len(user)
    if (largo>0xb):
        exit()
    userMAY=""
    for i in range(largo):
        if (ord(user)<0x41):
            print ("CARACTER INVALIDO")
            exit()
        if (ord(user) >= 0x5a):
            userMAY+= chr(ord(user)-0X20)            
        else:
            userMAY+= chr(ord(user))            
    for i in range(len(userMAY)):
        sum+=ord (userMAY)

    xoreado = sum ^ 0x5678
    TOTAL = xoreado ^ 0x1234
    vartxt2.set(TOTAL)
 

    
ventana=Frame(width=350, height=120)
ventana.pack(padx=10, pady=10)


vartxt1 =StringVar()
txt1 = Entry(ventana, textvariable=vartxt1, width=25)
txt1.grid(row=0, column=2, padx=20, pady=10)

vartxt2 =StringVar()
txt2 = Entry(ventana, textvariable=vartxt2, width=25)
txt2.grid(row=2, column=2, padx=20, pady=10)

txta= Label(ventana, text="NOMBRE :")
txta.grid(row=0, column=0)

txtb=Label(ventana, text="SERIAL :")
txtb.grid(row=2, column=0)


bgenerar = Button(ventana,command=generar, text="GENERAR", padx= 25, pady=5)
bgenerar.grid(row=3, column=2)


ventana.mainloop()

=====================================================
spec:
==================================================
# -*- mode: python -*-

block_cipher = None


a = Analysis(['llaves.py'],
             pathex=['C:\\Users\\John\\Desktop\\practica'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='llaves',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=False , icon='cuadrado.ico')
===================================================


Gracias
« Última modificación: 26 Enero 2019, 23:57 pm por Jhon2019 » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.164



Ver Perfil
Re: Icono en python con tkinter
« Respuesta #3 en: 27 Enero 2019, 01:18 am »

- El problema no es pyhton o tkinter, el detalle está en pyinstaller --onefile

- Para que sea compatible con pyistaller --onefile haces el agregado que comenté antes:

Código
  1. from tkinter import *
  2.  
  3. raiz = Tk()
  4. raiz.title("CRACKME KEYGEN")
  5.  
  6. ###########################################
  7. import sys
  8. if getattr(sys, 'frozen', False) :
  9.  raiz.iconbitmap(sys._MEIPASS + '\\estrella.ico')
  10. else :
  11.  raiz.iconbitmap('estrella.ico')
  12. ############################################
  13.  
  14. def generar():
  15.  
  16.    user = vartxt1.get()
  17.    sum = 0
  18.    largo = len(user)
  19.    if (largo > 0xB):
  20.        exit()
  21.    userMAY = ""
  22.    for i in range(largo):
  23.        if (ord(user[i]) < 0x41):
  24.            print ("CARACTER INVALIDO")
  25.            exit()
  26.        if (ord(user[i]) >= 0x5A):
  27.            userMAY += chr(ord(user[i]) - 0X20)
  28.        else:
  29.            userMAY += chr(ord(user[i]))
  30.    for i in range(len(userMAY)):
  31.        sum += ord(userMAY[i])
  32.  
  33.    xoreado = sum ^ 0x5678
  34.    TOTAL = xoreado ^ 0x1234
  35.    vartxt2.set(TOTAL)
  36.  
  37. ventana = Frame( width=350, height=120 )
  38. ventana.pack( padx=10, pady=10 )
  39.  
  40. vartxt1 = StringVar()
  41. txt1 = Entry( ventana, textvariable=vartxt1, width=25 )
  42. txt1.grid( row=0, column=2, padx=20, pady=10 )
  43.  
  44. vartxt2 = StringVar()
  45. txt2 = Entry( ventana, textvariable=vartxt2, width=25 )
  46. txt2.grid( row=2, column=2, padx=20, pady=10 )
  47.  
  48. txta = Label( ventana, text="NOMBRE :" )
  49. txta.grid( row=0, column=0 )
  50.  
  51. txtb = Label( ventana, text="SERIAL :" )
  52. txtb.grid( row=2, column=0 )
  53.  
  54. bgenerar = Button( ventana,command=generar, text="GENERAR", padx= 25, pady=5 )
  55. bgenerar.grid( row=3, column=2 )
  56.  
  57. ventana.mainloop()
  58.  

- Luego con pyinstaller:

Código
  1. pyinstaller llaves.py -i cuadrado.ico --noconsole --onefile --add-data estrella.ico;.

Nombre: pepe
Serial: 17766

- Te podría recomendar también este libro en inglés, pero lo raro es que no está la orden iconbitmap :-\ http://infohost.nmt.edu/tcc/help/pubs/tkinter/tkinter.pdf

-- Y por supuesto este otro buen libro en español, es muy práctico con muchos ejemplos: https://openlibra.com/es/book/download/doma-de-serpientes-para-ninos-edicion-windows
« Última modificación: 27 Enero 2019, 01:40 am por EdePC » En línea

Jhon2019

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Icono en python con tkinter
« Respuesta #4 en: 27 Enero 2019, 02:54 am »

Muchisimas gracias  ;-)  EdePC, Si funciona  :o
Voy a leer los libros.

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
icono en tkinter « 1 2 »
Scripting
elhacker_carlos 11 11,138 Último mensaje 6 Julio 2011, 21:46 pm
por elhacker_carlos
[Python/Tkinter](Kyurem v2.0)Consola de comandos hecha en python
Scripting
AdeLax 0 4,547 Último mensaje 9 Agosto 2013, 22:45 pm
por AdeLax
[Python/Tkinter](Kyurem v2.0)Consola de comandos hecha en python (Continuación)
Scripting
Príncipe_Azul 5 5,280 Último mensaje 16 Abril 2014, 11:19 am
por AdeLax
[Python] No va tkinter en mac « 1 2 »
Scripting
<Trocutor> 17 9,137 Último mensaje 16 Junio 2017, 16:21 pm
por <Trocutor>
[Solucionado][PYTHON]Como dibujar un triangulo perfecto en python con TKinter?
Programación General
Mastodonte 2 6,814 Último mensaje 24 Septiembre 2017, 15:50 pm
por Mastodonte
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines