May-19-2019, 02:32 PM
Grab the following python logo image
![[Image: 110px-Python-logo-notext.svg.png]](https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Python-logo-notext.svg/110px-Python-logo-notext.svg.png)
from https://upload.wikimedia.org/wikipedia/c...xt.svg.png
To embed this image into python source code use img2py.py from wx tools
python_logo.py
![[Image: 110px-Python-logo-notext.svg.png]](https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Python-logo-notext.svg/110px-Python-logo-notext.svg.png)
from https://upload.wikimedia.org/wikipedia/c...xt.svg.png
To embed this image into python source code use img2py.py from wx tools
img2py.py Wrote:Convert an image to PNG format and embed it in a Python module with appropriate code so it can be loaded into a program at runtime.
The benefit is that since it is Python source code it can be delivered as a .pyc or 'compiled' into the program using freeze, py2exe, etc.
from wx.tools import img2py image_file = '110px-Python-logo-notext.svg.png' python_file = 'python_logo.py' img2py.img2py(image_file=image_file, python_file=python_file, imgName='get_python_logo', icon=True)This creates the following python file
python_logo.py
from wx.lib.embeddedimage import PyEmbeddedImage get_python_logo = PyEmbeddedImage( b'iVBORw0KGgoAAAANSUhEUgAAAG4AAABuCAYAAADGWyb7AAAABGdBTUEAALGPC/xhBQAAACBj' b'SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+g' b'vaeTAAAAB3RJTUUH4QgKBhw1+kgs7gAADjFJREFUeNrtnX2YVNV5wH/vmVmWRb6CloiIShoB' b'g1tBFncBNSBLDM0HSOqagGiMpqkxqSbpYx7ENtPWGNNWik+e+FATtTUfRpeighJtgl3tVmZB' b'VIRVqjEGQclGgYfwtR9zz9s/Znd2Z+bOzJ3Z+dqZOX/M7tyPc+59f/e8533f894zwlApgYCZ' b'3Vl7jhj/eaJ6HuhEgfFqdQLCeKAGGANqgGqUEaAW5Ei4AnsYBaAD9ADIfsG+p1b3imHnpLfN' b'G83NTc5QEYcU64Ut/vrm6oNjQvN8VucrLEB1Vi8cQMMM+j/o206i7RpzDIBGHXMCeFWQrSib' b'j46U59sDTd0VcB5Lw+2b5qtlJdhlAmNdBJwLaC7n6lHgKUH+LfgvX2ipgEtQ6ldvXGKU2xXq' b'kgk4P9Ditr+myB3b7v7CL0C0Ag6Yu/qpsy3OOpRPphJwgaAN3B60jty4fe2KV8oa3NzVT1xq' b'kcdQxg0BaH1fOxG9ue3ulfcVUna+AkN7BmXUEIIGqB/4zMQ5y3h362PPlRW42YGnTherz6GM' b'HmLQ+lWV6vwzG6744N3gY9sLIUNTkKelx96FcmoSAStoC+idIP8AbAacYoHWV6cKd9ff/B9/' b'VggZ+vOuIgMbxttulkcLqF8YAgestU1t31/WOnB33W0bzvdZ1gNTsw7N7VwPdQpajeFuYFHJ' b'9zjt8X0cbJUbNKDbsXZxLDSAF+9cttv6zCKUw8UAbUCdjbNveXBG6YOzTE4ADdCfbPv+sp2J' b'zt3+3aX7VLmniKABik+5svTBhWOJrsKwqs+kvGCfPl1M0MIXJfUlD07EaGLr0fzRg+N5pKig' b'ha9+QulblaqayOQ3OFNSnW6tTi0maKBgZVgZuAM2oZ+myJcIBJJekyg3FBW08LZQ+ahKN+da' b'mFHfWXtHonMvunX9Xyl8urigxW4vUT/Oqqokj4isqv/2+qli5bvBf/7cSwB1tz461SB/I+j1' b'FWgFAhcth0RCYpkaXVb/7fUnQS3KKcWnHgsHrWDg0gg51RSdIZKozrKwKvMRMM4ntAJ0vAIY' b'JwOlVIE2hNyB0oJWqFEu7+CsDrjdkoBWJlalEfaq8ut4IdlITCuWtLuArWsHjgpFib1ArPxJ' b'qUFzE1NJlfpv/uwx0KW5hiaqe9p+8OXzymSMy/NYmquepmXkgOdxRC0INP3Nkkn0hMYnvq6e' b'3q5qenA6fyvTW47lBdycbzxaI8P9M6zIVIVTjTXDFLWuAosqTgK52uSCt0mAJNxlUZiSH2gx' b'AJ3QrRj9mqvLoNqv6FRBqtH2y/cgbET5kUx/5jfZBRcImIaeGZ9C5QZFF6lSg4YHSRXrMRtL' b'EghJEghDEghYCms9qteoiRs0l33CNNBpwLd09+UPUm1uk3N/+f6gx7iG2x9vbOieuQuVjaCf' b'RftevghfQF5T6Apt8iesM/nwmtxxj3z3IfYGukM7dfflCzLucYu/vrn68Kief8VyY6IGK9AS' b'kNMk7SjJr0GZAPYZbV+4XKZvWZ9Wj6sPbB59eFTPs1CBlja0mMniNKH1fa9C5WFtX/hJz+Bm' b'BTaNoLtnEzC3Ai1daHhoJyW0vj9+rPxc2+d/1BO4qi59QODSCrRsQXOJ7qSG1vuhH8Kaf1eN' b'DpbEgatf9fh1iF7l3kCJQtPBQFN3fy6ZSvQMLRK7m8fuy65OCG5WYNNpIrI2UQMlC43BQEsx' b'xKWafE0JLVLH97T9ymGu4Kq67CpgdAXaIKB5GsfShBYuE+k5eFUcuHm3PnEGwo0VaJlA0zSg' b'JdCpyaH1Rln4Rhw4x6/XueV4VKClhqbC8Thdmc445gVa+J+ZunP++bGq8uoKtMx6mlgOu49x' b'2YQW2b80Aq5+9cYGlGkVaBmoRwUV/UOM/hvpeRxLC5oCekUEnFH98wq0zKCF3x1gR5SART/k' b'zfhIFxqAzNT2OeNMeJteUoGWITTA+qQtpsdN8GYxpgst7NTRU1VnpgceHQZ6UQVaZtBA9k/u' b'ODUYOeLFWVUotWlZjN6h9cVBZptRXcNmAiMq0DKBBmB/HLV4W8246UBNRsaHF2jhh6XOiDC1' b'Ai1TaPoHJ+RfGy1tWZJbaACc63esThYq0DKAhsJf77jvK0diJL48IzPfMzQFy1l+g05WT1MR' b'5QYt+ZgkcNe2e296JEpy7Y0XA1PS983UO7RwRscoo/CRCrS0of1j2703rYrvKuY7OYfW+78f' b'BiyAVoGWCtrvFf5y2703bYrTbu2NTag2ZgwN79AA/KiOCKdqVaAlFrrsB/vjqs7ha/73geuP' b'xkHb84nJhHTdoKClmd7gRxhRgRYHzVF4DWErlubtH+54lkDANZlT9yw6gxC/gt5oyaCg4Tkn' b'xR9edLpooO0DtqO8gmiHWj0sRo4INiy02DcdQuGN/U6UDNwRXyS2Eun9Gj7eOL5OR5331fHt' b'23HfV06Qomh740xCbAA9JyvQUskrZowbUWBoR1HuN0Yf2rrm2pcZAkXfahxDl6zCcgtQ7SkW' b'mabxkWpayA/qEFm3Mr/QBO5X61/dds/yjqKHpQFDe3AWYlfSqSviVrXNI7TwGAcngWF5hnZc' b'RK8Prrn2kZQCe3PZmfhC56GMB04DGe767oCNfLgXx/UEl68DXxSRsWDHAdN47YWZiI5KO+qf' b'LrQ4Abi35QftBMbkEVo32GXBNV/8L/cn+0ofb/csBL0G5DJwJvS/K9BXryS4JkksSEkhSHF5' b'wsVmkJHF4KCl7HkRVcmJfKpHVfnitrXx0PTNxdX4h3+VvT3fBM6kz0fxdKPZMMPxKLhM284e' b'tD5wJ/NoiPxk29qVD8cP9ktqMeZnoLVR0/6eb5QcqqwCQCN1WwbL7/ME7SQhc1sctN8u+QzG' b'tIHWDjJdO7vQtIDQNPXD6Rdhn+bHT/tR2w+u3h8N7YpFGDag6k9fbQwFaGQJWtw+axTeyYdz' b'Lcq6OGtR+EVxQktg2mVtPPWaSJRw33tGxO7LQ0Tk1eDaa16Puh6//hPouPR1fZ4sOtenP4/Q' b'kratbxknxP/lPvYoLVH3tHfJx0A/n9SiK7pxpmiggbLHnDJKXgq7pzkMGFuN/jUMNdcR9dpQ' b'ERsHFBAaCTSKSKtpCTQdA92Tyyi/MTZ6SXqrS9PyzQoJTXPkI6Z7L1Grrpvn+1LQt+dyasbp' b'Nu/1x/+vHAf8aUYOdd6h5dBHzBQa/E7qWt8x4ckNfTqX82nbfnjNof6YYdcF9K2DkTNoZAna' b'IHIfsxntGbjP6kboTUEfftz3FNCZC2gRZyDSsO+0jKIghRxntIDQ4trWhyLgWu5tOgZsydnM' b'dXSYfmxhxpligTYI9QuvS0Pbjgi4cJ+wD+Q23SBSqockNHLoI3q+F4n8rlAE3KR3qp5QeCvH' b'0AZ3M4Wy6JL2vHxB421G/vHBOHDNzU0OomuzD02TsssoClLwcSbv0EBYJdPbu+PAAYwYecY6' b'YBdaDNA8LnqWT2jk0N1Idi/KBrkoGJUtEAWuJbAghHKz62iaLWg2iw51vqFlkEaXhft8Bytf' b'jhVj3AI1bWtW/DdwV7bzHrMeBcm3Reep7axDex/VxTJ366GU4ADO2jfsbwV9MjfQyI5DXYhx' b'xovFnT1o+3BkoTS0veYmPldwzc1NztHRwz+H6obBQtOsQBtcunZWoeUnJ2ULVVWzZO7WXYme' b'+4TLHrYHmrprxky6SkT/vjf3cvBp4dmOgpQMNPpNfmQ5FwUXyYX/k/kKsS2BBaHgmmsDYmUe' b'Smt2oNnsOdSFgpZVK5lDWH0E1aXsnXSu1G99WCT1YlOe1mQO3nNNG3DJ7JsfnG2EFcB8lKnA' b'8PSgkT1oXp5+5UaMHAwnwzrJr0f6pgedFIfKgD/Jjh0w3SgDDnIAUQfkID7e5cKtb/WDasNr' b'SWsV9O33XLcdCE+KBgLm4o5zx/TvPeK9onzlPtrQk1Lbsp8SLJn/7kAgYFuJWQrJS3GiJwty' b'mvtYwqWwv/SR8zS60i3+0oWmYHy7dVejjfsRpWzOKvRag1LXOqv0weUv93FM7+RjbqD1n3eo' b'vFTloKAVWRpd6YNzShGalE+PK6XcR7VlAq5o0+jIbnpDSRknNkaxZHNeK3thrTdADqF6Dujp' b'KaGJSOmDy6lxMGhov8TYW2RG6xu9pwgvXXw58EOUjyRJYiojcMWXRtfMzOc/L9Lv8IVjiK1P' b'a7B+Ln5/G3C2a/02/+rSVKABcAxrvjoQ2sAiDW0dqH4rYf1SDlalalXOoGVqBKn+WupaPkh6' b'3dK1EdVj7vVLGYAzejJnFl2maXTCvlSXLXU7ehAOuNdvKYcet78Icx/He9DuJnJcfP2mDHpc' b'dRCNCp8UPvdRWKTt80cmve4XGy4jEvuMrU+6Sh6cTN30AcKvcgYtk9xH1XF0Ot9L2Nt2fuIU' b'MGuSGFVvlIdVabmz+HIf9Wu6Y946fXn+2Kgmgpd8jO5jz6Jam6StJ/PeAQrmxrUveghkZRFm' b'ZJ3oTYw6SPjN2TpUTZK2OjhR81FZ0HKsPMDt+ewonJMvAOcP0dzH8E4rfyFzghvKQ1UCMm3j' b'UaxtRHl9aEBzGTOt/F0hoBUUHIDUbumgp2cuqo9nHRo59BHREMpNMid4R8FkRxEUVYTdC78E' b'3AGcnoHKGtQSgmlCewUr18uc4EuFlJkpBnAiqNRuuZ+qziko30E5UHzQpB3sCvaeVVdoaEXT' b'4+J64IuzqqgefQUqK1BdCJySEbRYMOlDO4TynxjzU2a/0JooCF0B5wbxzcXVHO/6ODgLEbkQ' b'ZQZwWhaXEOyDpMDvQHYBz6Oh59h79svS1OwUo1yKHpwrzF2XTqLHNwWciYhORJiAyoexjEXU' b'hENTGNDRoMdALMoJRLtQ6QJ9H+wBLB2IdOA4b1Jzco9c8OrxoSKD/weQ8i7cArqaQAAAACV0' b'RVh0ZGF0ZTpjcmVhdGUAMjAxNy0wOC0xMFQwNjoyODo1MyswMDowMAPxhVgAAAAldEVYdGRh' b'dGU6bW9kaWZ5ADIwMTctMDgtMTBUMDY6Mjg6NTMrMDA6MDByrD3kAAAAAElFTkSuQmCC')This file can be imported into your GUI code and converted back into an image for displaying as a frame icon, or on a button etc.
import wx from python_logo import get_python_logo class ImageFrame(wx.Frame): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.SetIcon(get_python_logo.GetIcon()) self.main_logo_image = wx.Image(get_python_logo.getImage()) self.panel = wx.Panel(self) self.create_main_logo_static_bitmap() self.create_spin_button() self.add_sizers() self.SetInitialSize((300, 250)) def create_main_logo_static_bitmap(self): self.static_bitmap = wx.StaticBitmap( self.panel, bitmap=self.main_logo_image.ConvertToBitmap()) def create_spin_button(self): scaled_image = self.main_logo_image.Scale( 32, 32, wx.IMAGE_QUALITY_HIGH) button_bitmap = scaled_image.ConvertToBitmap() self.spin_button = wx.Button(self.panel, label='Spin Logo') self.spin_button.SetBitmap(button_bitmap) self.spin_button.SetBitmapMargins(2, 2) self.spin_button.SetInitialSize() self.spin_button.Bind(wx.EVT_BUTTON, self.on_spin_button) def add_sizers(self): frame_sizer = wx.BoxSizer(wx.VERTICAL) frame_sizer.Add(self.panel, 1, wx.EXPAND) self.SetSizer(frame_sizer) main_sizer = wx.BoxSizer(wx.VERTICAL) self.panel.SetSizer(main_sizer) main_sizer.AddSpacer(20) image_sizer = wx.BoxSizer(wx.HORIZONTAL) image_sizer.AddStretchSpacer(1) image_sizer.Add(self.static_bitmap) image_sizer.AddStretchSpacer(1) main_sizer.Add(image_sizer, flag=wx.EXPAND) main_sizer.AddSpacer(20) button_sizer = wx.BoxSizer(wx.HORIZONTAL) button_sizer.AddStretchSpacer(1) button_sizer.Add(self.spin_button) button_sizer.AddStretchSpacer(1) main_sizer.Add(button_sizer, flag=wx.EXPAND) main_sizer.AddSpacer(20) def on_spin_button(self, event): self.main_logo_image = self.main_logo_image.Rotate90() self.static_bitmap.SetBitmap(self.main_logo_image.ConvertToBitmap()) if __name__ == '__main__': wx_app = wx.App(False) frame = ImageFrame(None, title='Image Frame') frame.Show() wx_app.MainLoop()