Home > Software design >  Difficulty decoding image with base64 library
Difficulty decoding image with base64 library

Time:11-28

I'm having trouble decoding an image when I import it from another file. I have four .py files to make two buttons. In the first, on line 21, the button works and brings the image, in the second, on line 28, which is imported from another file, it appears as a button but without an image. How can I resolve this?

lab.py

import tkinter as tk
import base64
from imagens import *
from cores import *
from widgets import *


class Janela(Images):
    def __init__(self) -> None:
        self.images_base64()
        self.tamJanela()

    def tamJanela(self):
        self.janela_doMenu = tk.Tk()
        janela = self.janela_doMenu
        # janela.state('zoomed')
        janela.title('Disk Gás Gonçalves')
        janela.configure(background=preto_claro)
        janela.geometry("%dx%d" % (janela.winfo_screenwidth(), janela.winfo_screenheight()))

        # Here the code works ###############################################################
        self.img_icoName = tk.PhotoImage(data=base64.b64decode(self.editUser))
        self.rotulo_nome2 = tk.Button(master=janela, image=self.img_icoName, activebackground='#00FA9A', bg='#4F4F4F',
        highlightbackground='#4F4F4F', highlightcolor='#4F4F4F')
        self.rotulo_nome2.grid(row=0, column=0)
        
        # Here the code does not work #######################################################
        # I'm importing from widgets.py #####################################################
        Botoes(janela)

        janela.minsize(1200, 640)

        janela.mainloop()

Janela()

widgets.py

import tkinter as tk
import base64
from imagens import *
from cores import *


class Botoes(Images):

    def __init__(self, local) -> None:
        self.images_base64()
        self.local = local
        self.bt()
        
    def bt(self):
        self.img_icoName = tk.PhotoImage(data=base64.b64decode(self.editUser))
        self.rotulo_nome2 = tk.Button(master=self.local, image=self.img_icoName, activebackground='#00FA9A', bg='#4F4F4F',
        highlightbackground='#4F4F4F', highlightcolor='#4F4F4F')
        self.rotulo_nome2.grid(row=1, column=0)

cores.py

preto_claro = '#4F4F4F'
verde_médio = '#00FA9A'
vermelho_salmão = '#FA8072'
azul_seleção = '#F0FFFF'
verde_limão = '#00FF00'
branco_gelo = '#EDEBE6'

imagens.py

import base64


class Images:

    def images_base64(self):
        self.addUser = 'iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP gvaeTAAAACXBIWXMAAFiVAABYlQHZbTfTAAAAB3RJTUUH5gkWFg4SATq7CQAADcJJREFUaN7NmXtwXNV9x7/n3Pe9e   Vyut5LUkyy/AWECJE0MShwTjOAEPQ5hJoFBa7MGQaRNwOy1NO0070yGBkk4GGxqSQM1kajKTkAyQmpCEeMzAFEJiPDxs2ZKxHitptbva5717n6d/yJYtJCzJspv NDvaPffec /nfH /c3 /cwiWaE/v3AJCCIIgAGNsxjFCKALGwFGCP3v8v5d6q3MaOZ L/vPeLfB9BoBB4HkYYR03/es 8s2tl0mSJAmEENJs2s6Df7Oz eOf/ALNpg1KKe56Yv//H5Cn7rkBjuNCUWR8e/eL5Kt3bWrXdf2qkKZeqShylyDwUQJCbccp1Gr1N8qV6v4Hn3y576Edmxkv8Lhj94t/fJCndm6B67hoa2vBSG6sPRGPfSWdStyaSiVWh8O6psgyeJ4DAYHruSiXa/7QcO7dweHcv Vy4/siEcPhOA537vnFHw/kqXtugOt62PGDX2HvfVuv7ci0/lN3V/aTLakEL0rCma5OxwmZ m03bRwf KD0/tH bx452r nPZP2ps4DKCW48wLFDreQk57euQWu6 GqK9bhmq74dT0rOvesu2z11alUgnIcPee1vMAjFgkrvh/02rYzXCiUhu/be6B588dW4o5vfwOd5VH87HfH/29APnd5FuGQhqHh3JruruzudZeuvlzXQ2dGfx6jHAdD10KSKH4qGglv2trbGanVGgPvHXjdvGP3i iaeAM/e3NpMPOCPL1zCwRKMZIbk7o6s99Yd9nqbdFoZMEQp00QBKSScTXdkuzUQ9p1ruumi6Xy6 / 8tmGHzD8fImq0PlOUBQFqqKgNZ1a355Jb0vEoouGAAFACAghkBUZncs7hDWrVtyWiEfvfO6Fl8/rFbBoENM0ceujP0XY0D/b0pJso9yCvPEsCIJ6rYFcbhyO406DtbW2CC0tyVs3f aaDM9xePqeLRcXhDHgoZuv0nQ9dJUR0hY3eoSgWqnh MggiqSKIycHUK3WABCIooB4LNqjaeoaVZEBf0kc4OclpQSapuqqqnQIorAwtyIEge8jP1HEaKWAtt4MUtkE8icnMPCHYazil0PRVIQ0VZVlaXkkEka9YV5cRSilEHheEXg RCmdflAQAsYYguDUhzEEQQDbdlCYKOL94/0oBBV0XdOFls4kCCFo6WxBuDuCXD4PMAZB5Hme4xIbru5dmhwLUQRgABhjp6UgBJZpIV8owrSbCHCqGUAABp8E4HUB8ctTSLTHwYv8DBVblidx7IPjcB0XlFBCKOG1z30SeG5pb/t5QfyAwXbchuO4pcCfGvG wQ gZw0k02nwAgewKVTKUYiKCEmRQDk6BXC2KzIGUZVAJQrHdeH5vu/7QfWtx3548RVhAUO5Uqs1GuYJ23E USxNQs8a6L6ya0qGWSHDTos4Z3 EEBCOwPcDmKZl2U37xNDw6JJB5o0RMIJ7t3 lWas13qhUa17TdRCKh075Ejsz6tOfhd3Y8zyUy9WResN8v7HEQF8QSMeGAC/sewuBXJ/IT0w4QeCfzgfP3whBo95AsToxZizzK3LSQ2tvcHFBmE Q/lQx1rZWv90kNbVWM7FkEsYwXixAaUVvukvf1LZaX3KX87sWgMCHroXVTiMjozBZXLD7zGWEAJbVRNWtILk8YlDKdbYuzyw661k0CGMMvutVHNsZ0lMytJQAQpZ2VyIyxLs0EBpYnuueGBkYAjm/qnvhIGDAjV87UDZrjRfspukkVygQFLIkVcJtPEJxHrVy9bBt2a9bDXMp3S0QBMDL398CyzSfLY5N/MRq1D2yoKvmtqlYCFAczw/VypVHtuz81qDv 9i8Y2kLE/M UkAIivkCBEHIlwvFXY1a/b C4PxnGMYAz/VypXzhr6qTlef2P/G3IEueBhcAsmXHfsSScTi2jUgimQt8f7/dtOzzvaHvuXBd52itXPqNoio x3PYvOOliw8CAJt3vAReENC0LDRN891aeXI88M8j7yYEZr2ORq3y 5HBE3UG4PrtF2atawFJ4xmY/f9xPSrlUt/kxPgrjWrlTj0aW1S1yAIfxfHRfL1aefGKjZt827IAALd9/ uggQCQqSwaOLO8w059p5SCMYZntj88Z9 LKvf 9MYViCaSXqNWLXI895lwLBGh/ALHghBM5sfZ4PEjeydywz kHOf1kTiMjdeByjxEgUdPph2vv/euwBgLOZ4bsmxbrjTq9OeP7/E2XvdZOK6Ly77wcVx 40Ycfv61md0vBuSl721G4PsYHfqA61p96b3LelY/1NG9SuWFeQouQlApTqD/vcMHx4cH7xIkqf8Zsg6O40ARJRwbGRQ6ki0rDVW7JqQoVymStIznOC1gzHNct9hoWu/XTOvVSqP Zm/PymLf0CAkQYTju3jm7ocXD3IaBgAC3 /RI5H9Le3ZrnRHJzTdAKF0JhAhcB0bpfFR5Ab7Ucrn/2Vl7/p/7P f1/A99OK69evx67cPrUoYkbtb4/FtLdFYNqxqgigI4CgFA4Pn WjYTZSqlXKuWHwjP1n6Qb5SfiEWMsx8pYiEEcUz2x9enGvt2nMQJ3EN2ukhUN MRVPx22RVjJXyo6hXK A4DqKsgBAKx7aRHxnE2NAALKsCSRFg1c1XUtd 7cBTbw/hvfE8ZzrOF7ta2757aWf3Ld1tbbGobnCyKILnOHCUgqMcRJ6HpiiIG2E5FYl2y5J4PWMsUa7XD8d0o1asVfGxL22aP9gf2H3wrO0CAlFWkV6 Hifefp1PE0pCRghqKIBlWhg cQSyooMXBFiNGkB8qIYKUTJg1hsIAsK1qvsI8F32F08/eGtPpv1bq5dlOzRZOVWDznZPBkyrHFIUrO7Ihg1V  o7Hwykhifyu JGeEQVpXMrcv/ugwj8AILA45F7b8H6T9 U5ji6sd9c yVPv TLafFkbyQsipTjIMoSJEVEELjwAweyKkIzQuB4HoQQOM0mjtfXRNfdvK37ks//ydXZjLLr0s6urCrJswA4wkHgBFBC59hzITBUjSiivLbetNSxyeIBEDhzxsiuPa CEgLP83HXn1 LJ5880BWOaLfE4sa2WExfa4Q1QxZBtNyP0C4dhWaEcJZoICAzHoAFPsbyNorJO1EiaRwd mWwpjNCw1poThUyoTa0h9pg U30TR5D05v9/mWM4djIUP1Q//H7tn58495Zijyw51V0tMRQrlmoVU2lf6Dw5Y5s8pEVPZnbl3e2LEskw7KmSUSUJQRiAs7EO1B4G7zwEV7KApRLdZTkjeDbP42xylFocpmko9E5E0UGhpSaRFpLgyMUY41xOIE7KzumlEKVZbFmmonf/P53v5oBsmvPq4iGNeSLVTSbTjzdGvv77p62f1ixMtMVjYYo96FVRiJF4XJxNPNHwbP61N4IPbO94Do2JksWivyVINmbYAcMg2Nvoj2pQzzH ycqRRGTo3ADD6ONMbhzgACAyPFwfT9eqlX7ZvRGQDBZrsOynFi6NfbPPasy21vbEgLHkY98TdDEelhSFCNjr0CZOAaJmiBg8AIeFknAiW4ASW0AFWRUJwfBczYUMbrktH3qgQniRjhkqNrWaZD7HzsIz/dRmaxLHdmWr69Ymbm7LZMQCCHzZiHUyAKh22E2S2g0i0DgAYIOoiRAhdD0eTWzBFXip9MNYCqwOXpaaQYGTP8mIBA4AWIgTmfIjDF4gQeGqVlOlSRosnzFNAgLGJZ1pjAm8p9ftjy1sy0TFxecXjMAhAdRUyBqamb7Wd8dtwFFnOmeaa0FmVDbjDaJl6b cyLWxlYjYGfKBttv4uhZEwDHcZBFMc0DwAOPHQShBMf7RtKdXa1/2d6RjHMcXXwdzc59KGA ppddT42/zMsIS8bcShMKXQzNaGt64tS0DAZyKnIooWemmmxXGqPDhRtaM/ENqiYteTHgw0YAcFSA7wdntRFUnSpG6rkZA6FLOgxRhxd4KFhF IE/3YnjO/ACbzr4p1zNt/jTI/OHN/tCq9Ys 2I8YcgXFuEMiSzqsJruDOkmzAIKZnGGSt2RThiiDidw0V85AdM1Z8xa7Kz1Ztf30bTtQfrA7oMQBB66oWYjkdAVsnzh1ThtupaAaQfwP1Qqsw//zVgunnX0rMEhqFsWqzet1ygAKKoERRZ7QoaS5LgLshM22xhgqDGA6Khb5gWp0xljmKhMlqqNxvM8AMRiOvKe3yEKvOr7wUVThBIBMb0LY6VD0BXtI2DI9KojwUfXGYQQVOp1jBQKB0r12kH VCs8z7cGT bfyefLmKnfBTRC4LgU46ZtREPlbCoaI7OSQgBVp4aRem4qsJk351vd9TwMjOZy45Olx7OplkmeEIJDbx1DNKb/ MTA6P6zZ5WLYRykoB4qdnCDlUdFQfhEJKTPShwnzAIKVvHUDsVsUD8IMDA60hgYyz16cnzst23xxFQ9EosbAFCVZbF6USkABHARC0Vzg PH7ifAv6/NLt QCEdAyIcy5jn8mxAC23EwMJqrHhk6 Z3RYvGJTCLpUUqXuOB6Hnb7k38Nx3WxLJVCrlS8pDUW/7vOdNuNmURSVyXpIycBz/dRqlWDE2OjRwbz498ZKxV/FNZCFs/xCHxvcaXuhbDDz7 G3m3XolSrQZOViZFC4ZVqo56brNWWNR0nxXGU8BwHekohy7ExNllC3/BQtW9oaN9gfvzBZ3/76xd7V/S4As8h8H3s3f4w/hdjSyoPRFIhbAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wOS0yMlQyMjoxNDowMCswMDowMOZEiVcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDktMjJUMjI6MTQ6MDArMDA6MDCXGTHrAAAAAElFTkSuQmCC'
        self.editUser = 'iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP gvaeTAAAACXBIWXMAAFiVAABYlQHZbTfTAAAAB3RJTUUH5gkWFhApZHBt8gAADaRJREFUaN7NmXtwVNd9x7/n3Nfu3ae0Wu1qtXpLICNhG/AjDrEhAQS4pHadGbedcRPHIAxx/ODRJs6jbrHjtHHrqRPjENu1HXDbqRvbk IgwHVcB49pDY4BSwgJCb2FHvvevXf37t57T/8QUAN6rBB0 pu5M3tn73l8fr/fOfd7fpfgKthrm9dO/ofBAbyO 1/YfzWGmdbIXCZPCYFumuB5DrLVigK3C7fefCNswRK8/3YLxkJhpNMZMMZAKcX9P2/5/wPy2uY7QQiDYZhwOOw49lm7UBbwl9ps1nmSJFUKPF8IgMvl9DElrR6PRGKtpQG/mkikIAg8vrnr2kRnViCvbV6L8VAYvmIvBofOisFS/xc8hQX3ejwFywrczjJZlmVBEHgCEC2bzUUisdDw2bH9o2Pjz61bs L4W3v3QxSEawKTN8hrm9cikUzB6ylEIpkK H3ehyvKS78RDJaUuBwO8AJ3WXemaSIajeFU55ljPb392 rn1fz2ROspCIIA0zSvaqrlBbLnoTvx0cfHcPttN0FNZ6rKgiU/WVBf90eBkmKOchzA2DQjEKSSKRz7rP337R1d65tf2n3sjW0PQVFUUErBcTz 7Pm9cwbh8nnoD5fUoKzUj6SieCrKS39y4/UL/iQQ8FFC8guoKEmQrVa/YRiLjv/m38uUlKqNjoVGrFarSSnB20dO/9 A3LWkBi//cj9Z9eWbHmxsmP9osNSfV7vPmyxbid/nDXq9nmUWSWqilGRD4cgxQeCNu2 uw6 Pdl1bkFc3rYEoCmi4rry2tqbix/PrqgMcN2sOgBDwAg 7TYa3qNDFGG5RVLWzvq6mfTwUmTMInXl8gvp5tXC7nF8J H31oijOehBdN6AqaTDTBBiDIAiorizz IqL1h8 8mlBvik6JxDTZNjb8p7kdDiWFrhds6MgBLmcjq7eXrT1deFM/wByOR0Agyxb4S3yLHY6HPMtFmlqdXC1QAglcLudDrvNWitZxOl3qEsgVEVFZ08P BIJDU0LYBZRdPf3wdANEErhdNrdVqtU53DY5wSRFwglBJIg2ERRLLhobRAy QVA07IYHDyLjsFeOOcXoHpJFWSnjJrFVWBuDiNjIYAQSKIoCoLgq6 rnjMIP7NjCQghHCFkgoIApmEikVSgptMwDOPCc6ZpIp3VkDY0WLxW1C6phcNjBxgAxkB5DoH6EvR/1Ae/7gXHcYRSKlfftx6HPjpybUFMk0HXjXRO11PMZNBNA939/cgIOdg8NvAiBzBMCEOOg9tRiDKPA1a7BYTSi1ORMcguGUwEsloWpmkyZpqZwTd2X/uImKaJlKIm0un0QE7PLY7GEtCdDAtuuw6CKPyvNmC4 Ddjk64nylFQgUI3DGQympbN5gZPtJ4CuXIhPtHvTA8QAjz 9lE1mVKPp1IqUqoKT7AQgiRMTNQ8d136ewYzDBPxRDKsqulTiUQKeW4hVw7iqQN 9edfY0omeTwUDismM0D5GZvN6J1MJoNwNHI6Yyh9OjSULDLm1OWMqSU5GURnRC4gzlURNWy1ic45HMfOcQAIhSMwbKnqeV9yNlIIH RymTn1OXNqgcDIkiK3z3mHxcvT8VBkTvlMyMT2PJ4IwV9XUC4Iwhcq51fMzTP5gACAaZgZxliioFSGKeXA8n0pTmE5IwfZz0Oy87ppmNHQaAhzVSkzgjDGEItEw2pSOQROR A6BwQLwVxWpysgoKjSBjWpDGQz2n8nY/E8XToHEPBAoDxopBV1d2Qs9CmjWdAZV9Y0RgDeCqQSMS0eib2ajCfa9KwOpl9rEAPIahqamve3Rscjjyai8cNzSi0G5LRccvzs6N qKeVnDrdLBwFWP3hgTiAz nZ18wEceHE19u9aheLS4KFkLLY7l83enE/bycw0DBiG3p6IRnbaXe4YLwgwcvmF46PlywE64fvzziSETMiffDpYvfEAKMchGYshq6VPKsl4LG8V/HkjBFomjXQqeVJJxOLMNGFkc2hqnrmqsu9r96I8FQOjFLdt3IjE6KglNjQkeoLBCXmU/yQALZOGkky2xUJjn2bSKma91TCGWHhcTSVi7zbc9EWNEoqmjTOn1NNP/B3WvvkG3lm6FrZYxP3Jnj0PBhcufKXshht ER8buyenaZa8z6yv7 3GfetqsPCmW9NnB3qZxWptcroLxbxPd4RASSXQ33nqvdDI8LO5rKYwBrz Tve0zb77zEv4q 8/jB88/QJGJNkrO51PzispftxXVbnIVVx8IycIX8lpmjKrw/d9X61BeHQESjLeYxpmsUW2LbY5nDNH9VxK9XW2nxkd7PuO2 NtS6tJrNn07rTNnnr2Gdy67dvYbS9BQtU8wWDpk9K8 mZB4MUATyBKEiSbzZZJJhtmBfL6O93YcG8DKM9n06nUoJpKrON5wSXbHKCTFSTORUtJxNHT0Yqz/T2vDp458xIvCIxyFK/vnToa77/8ZXz9Wy/in//eDSWTKQqUlu 4fmHjhnkLFghDjCIZjsDLcuAohRKJyLN DWW17HmBkhJELhsLD6O7/TjGhweRy2oXToqMMaRiUQx0d6Cvuw2MaeB4LvGNp75nUo5i9caDU45x8KXVqFn/W z86XeQTGlFPn/5UzcsbGyuLC8TLJKImoYGjNVfj1ZqRVpRoSnK7/PaQrftPARKKQzDwMEcRZV0HHX6L01BKEWBtwBaRkN4tBeR8WEUFJVAEEUkYxGkEmGIFgFujwtaJgM6OsZ27b8Bw8yPrc//ABPykeHZb9/ OYg1WLXhe/iPf1yL XzYU1Z1y46YrfaBwkKPQCkFYwyiIKC2oRGnslmMf9Df7otGn CnB/gQqkLAmAlR4vHJx91cdU3A18WWVKcl ZY7zMMuQgisNhkW2YpMOoNoaACMMfACD7fXDZ6fGEJLM4ybtUvO9Kl3ZzWpK5lI9d2 vDF5srUfW372OxBKsEZ8Cqs2/CXefXkHMmrK4w3U7micH9iQJIrQ2nsctPpGOOy2iczIakjo5ulet3/7Xx88eGDKLWfb84egGyasVhGjI1GLp8h5s9Ml3 Vy25c5nbYqu0V3 KN7hEpPlAgWy Xaa8LZ54whPJ5ED7fOjEmL0qmkEorHlWPxmLIvmVBb7vv68oF//ZcPMa9WRM3gE1CVlKe4pGxHVX1jc3FpmUAIwekhE63DAVTULAIhDMc/a vo6up 7Efb1 /ftXnb5JXG7S98CMMw8fQjd Ddwz2NgaDnh5VVJT sqQ00lZV7A0Vel xwuziDSISFT0C2chPn80mMEEBNKhjXqyHW3EXcngLRU RyF3ld9U6nvFoQ Ns/OdqtJxNqdyD7QVZS2y DAACPk4AnSbSfiaFnYOx0b  ZLU9uXd S4T1IuTyXg0xAGBgfi/GfdkXuKasofm5efdkflAa9dptNAv3chInVj0xGhxntgEUEKMefr7pgQjmYUBIpjKpe6BV/CiJ7ATYhK0SRh9Nl4wo9zqBkEVeajPj05NmzC/zxrVX1jRuLS8uFi95RhEDmFIT6WzvbuqNbdmx/ZV/GkgMRJPz48c0Xg2zbeQimYSIUivPlFb77q2tLnqmbH6xxumRM uIjFMRZjbThgBoZgpGOw9A16Nks0oqGaNxEmDRAL78X1B6cNGKCwMFV4BBtgraoOPdfTQvr/cuLS8vFSyEyioLejrYOZaRtyzcfeqHlF4XtUFgRnv6Lb13I5AsQhmHiHx5Zhu  ePiPq2sDz9XUBXyiyOclq1gmDBY/DZIZATFzYIILzF4J4qgE4cWpzy8EYFoCfP bqHaOwldaiskgejpaO4d6uh5duX7f/rd23g3CS7hn0xsXLUkAwGM//U9YZQu0THZxVXXJnvqGigUWi5C/Nvx8KWiy 5kgXKPwBaaGGO7pemzF n0tLT9fCY7jL5P99Hw0KOUwPhqzeYpcj1RU WYHcX7CbJr7qwGxawU4npv07MKfawOb3QqOo0tLAp51Lrf9ilR63kYAlomD638T1e6xySHUSyOxAhzPT6kIKDBRFu1o7xddbts9Xp/bQ ncv1dMH4k4 P5foWaqSKgKek61dg5dmk7TyBq6feeH4DgO3mJ3wF1gX2q3Wa5pNEwtBf3UPyEg9MAfDE4N0dv12MoLEBxWP3hw2n6pIiqwWERYrVKd0ymXcfwVfFabRTTU/iOwx04gpyaRVpQpI7HygX0tLbtWTqTTDBAAQOWcDKdLhigJlVbZYqN06k8fc70MTQFGjqLC74FMBAx0nEQqEQcoPQ/RNdTTtWXlRemUX1GCJyBwOGVEIylHJJTIZLM6mXMFbtJoUCDaJtZiRHTYCkGoHTQRw3B3JzyBUowND3YPnuna2tTcsu832krwPJc3BHBu1 rrGUUup7/T3TXcdS5lrzIIQSatSlz/W48uXC5/ieMoTAbYbQ4kR9NoO3K0K5tVtjY3t zd /wKkDzWxKQgVqsEwzA6RUno5Lg5lvwmsYH2j3Hid//WIEqyX6ZePLDGAso0DI1Gh0fHo 9ntOTLgYKTH zcuRKUUty5aXYQE666xra8aR0qPTnSMSp 3zCxg6Mk98V66 lFZdreeCLx65FQ/MSyW4Oqkk5BFHis3XRlhbprDrJ0xTpwBL6sQd5iQICAvWLo pss2dWx/qt1hpHTYDACSoCH/ a9Kx7nfwAPPztG5sk4owAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wOS0yMlQyMjoxNjoxNyswMDowMOu8Z3oAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDktMjJUMjI6MTY6MTcrMDA6MDCa4d/GAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm 48GgAAAABJRU5ErkJggg=='

I tried to create a button by importing the base64 image from another file. There are two buttons in the application, one works and the image appears, the other does not work and the image does not appear. I would like to make the second one work.

All the code will generate this image. The bottom button that doesn't show the image is in the widgets.py file I don't know why, but when I import it, it doesn't work.

(https://img.codepudding.com/202211/d0bc15e1eef64d0991c449bf45596b06.png)

Thank you in advance for your attention and I apologize if something was wrong or out of standard, my English is not very good.

CodePudding user response:

It is because there is no variable referencing the instance of Botoes(), so it will be garbage collected (so as the image inside it).

Just use a variable to store the instance of Botoes():

class Janela(Images):
    def __init__(self) -> None:
        self.images_base64()
        self.tamJanela()

    def tamJanela(self):
        self.janela_doMenu = tk.Tk()
        janela = self.janela_doMenu
        # janela.state('zoomed')
        janela.title('Disk Gás Gonçalves')
        janela.configure(background=preto_claro)
        janela.geometry("%dx%d" % (janela.winfo_screenwidth(), janela.winfo_screenheight()))

        # Here the code works ###############################################################
        self.img_icoName = tk.PhotoImage(data=base64.b64decode(self.editUser))
        self.rotulo_nome2 = tk.Button(master=janela, image=self.img_icoName, activebackground='#00FA9A', bg='#4F4F4F',
        highlightbackground='#4F4F4F', highlightcolor='#4F4F4F')
        self.rotulo_nome2.grid(row=0, column=0)

        # need a variable to store the instance of Botoes
        # to avoid garbage collection
        botoes = Botoes(janela)

        janela.minsize(1200, 640)

        janela.mainloop()

Result:

enter image description here

  • Related