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
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 filepython_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()
