Рубрики
Без рубрики

WXPYPHON: встраивание изображения в вашем строке заголовка

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Я получил вопрос о том, как поставить изображение в панели инструментов моей рамки на Windows. Как это так, панель инструментов просто использует общий значок. Есть три способа, о которых я знаю. Первый – получить встроенное изображение из исполняемого файла. Во-вторых – сделать некоторое изображение, которое у вас есть и просто встраивало его. Последний способ – снизить ваше изображение и включить его в файл Python, который можно импортировать. Я уверен, что вы также можете связываться с Pil или, возможно, даже использовать обработчик краски, но я не знаю этого.

Я говорю о том, чтобы получить встроенное изображение с исполняемого файла. Это на самом деле довольно просто. Вот основная идея:

import wx

class MyForm(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, 'Image Extractor') 

        # Add a panel so it looks the correct on all platforms
        self.panel = wx.Panel(self, wx.ID_ANY)

        loc = wx.IconLocation(r'L:\Python25\python.exe', 0)
        self.SetIcon(wx.IconFromLocation(loc))


# Run the program
if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = MyForm().Show()
    app.MainLoop()

В этом примере я схватив значок Python 2.5 из Python.exe, используя следующую строку:

loc = wx.IconLocation(r'L:\Python25\python.exe', 0)

Затем я установил значок кадра с помощью Seticon (). Обратите внимание, что мне также нужно использовать WX.ICONFROMLOCTIONALODION (LOC), который я гнежу в вызове Seticon ().

Далее я поговорю, просто используя любое изображение, которое у вас есть под рукой. Единственное различие между этим кодом и кодом выше состоит в том, что я получил из-за вызовов в WX.IConlocation и WX.ICONFROMLOOCE и добавил объект WX.ICON. Объект WX.ICON просто нужен путь к значке и флаге WX.BITMAP_TYPE_ICO. Смотрите полный код ниже:

import wx

class MyForm(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, 'Image Extractor')

        # Add a panel so it looks the correct on all platforms
        self.panel = wx.Panel(self, wx.ID_ANY)

        ico = wx.Icon('py.ico', wx.BITMAP_TYPE_ICO)
        self.SetIcon(ico)


# Run the program
if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = MyForm().Show()
    app.MainLoop()

Последний способ сделать это, может быть лучшим. В нем я беру икону или изображение и включаю его в файл Python, используя утилиту WX IMG2PY. Почему это может быть лучшим? Потому что путем встраивания файла изображения в файл Python вы упрощаете процесс распространения вашего приложения с PY2EXE. По крайней мере, это был мой опыт.

На моем ПК здесь можно найти утилиту IMG2PY:

C: \ python25 \ lib \ сайт-пакеты \ wx-2.8-msw-unicode \ wx \ tools>

Отрегулируйте по мере необходимости для вашей настройки. Откройте командный окно и перейдите к этому каталогу. Затем введите следующую команду:

python img2py.py -i путь/к/ваш/icon.ico myicon.py

Первый аргумент img2py.py – это -I, который сообщает утилиту, которую вы встраиваете значок. Далее путь к файлу значка. Наконец, вы даете имя файла, который вы хотите, чтобы IMG2PY создать (то есть. Встроить значок в). Теперь скопируйте файл Python, который вы только что создали в папку, которая содержит ваш сценарий WXPYPHON, поэтому он может импортировать его (или вы можете просто скопировать код из файла Python в текст приложения, который вы создаете).

Я собираюсь импортировать его для этого примера. Чтобы получить значок, вы называете метод Geticon () в файле значка I Imported. Проверьте код, чтобы увидеть, что я делаю:

import wx
import myIcon

class MyForm(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, 'Image Extractor')

        # Add a panel so it looks the correct on all platforms
        self.panel = wx.Panel(self, wx.ID_ANY)

        ico = myIcon.getIcon()
        self.SetIcon(ico)


# Run the program
if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = MyForm().Show()
    app.MainLoop()

Надеюсь, этот учебник помог вам узнать, как использовать свой значок в вашем приложении. Помните, что вы можете использовать эти методы для любого изображения, которое вы хотите вставить; Не только для значка строки заголовка, но для любого статического изображения вы бы использовали в вашем приложении, например значок панели задач или значок панели инструментов. Удачи!

Дальше чтение: Wxpython Wiki – мигающий значок панели задач

Загрузки:

EBREDDED-ICON-CODE.ZIP встроенный значок-код .TAR