Ваяем музыкальную открытку на Python

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Вдруг пришла идея сделать музыкальную открытку на Python. Почему бы нет?

Приступим.

Для этого конечно нужен графический интерфейс. Воспользуемся уже входящим в стандарт модулем tkinter . Tkinter - это интерфейс Python к GUI Tk.

Импортируем модуль, рисуем окно, пишем в заголовке окна "Hello codeby!" и запрещаем изменять размеры окна по ширине и высоте.

# -*- coding:utf -8 -*- from tkinter import *  root = Tk() root.title("Hello codeby!") root.resizable(width=False, height=False) 

Далее создаём холст с размерами выбранной картинки и прописанным путём к ней. Параметр bg="blue" задаёт цвет фона, если картинка будет недоступна.

C = Canvas(root, bg="blue", height=330, width=500) filename = PhotoImage(file = "C:lack_blue.png") background_label = Label(root, image=filename) background_label.place(x=0, y=0, relwidth=1, relheight=1) 

Следующим этапом пишем текст. На холсте текст и фон к нему элементарно раскрашиваются кодами цветов без привлечения дополнительных модулей типа colorama. Отступы от текста делаются по осям padx и pady. Позиционирование самого текста на холсте через relx и rely.

zapis = "  Hello  codeby! " label2 = Label(text=zapis, justify=LEFT, fg="#D3D3D3", bg="#000000", font="Serif 24", padx=5, pady=2) label2.place(relx=.1, rely=.1)  hello = "  Привет КулХацкерам    форума codeby! " end = Label(text=hello, justify=LEFT, fg="#FF0000", bg="#000000", font="Arial 12", padx=5, pady=1) end.place(relx=.1, rely=.5)  C.pack() root.mainloop 

Ну что же, осталось прикрутить сюда музычку. Для этого импортируем модуль pygame и укажем путь до MP3. Если нужно чтобы трек звучал не один раз, то в скобках строки mixer.music.play() указывает нужную цифру.

from pygame import mixer  mixer.init() mixer.music.load("C:key.mp3") mixer.music.play() 

Вот что в итоге у нас вышло:

# -*- coding:utf -8 -*- from tkinter import * from pygame import mixer   root = Tk() root.title("Hello codeby!") root.resizable(width=False, height=False)  C = Canvas(root, bg="blue", height=330, width=500) filename = PhotoImage(file = "C:lack_blue.png") background_label = Label(root, image=filename) background_label.place(x=0, y=0, relwidth=1, relheight=1)  zapis = "  Hello  codeby! " label2 = Label(text=zapis, justify=LEFT, fg="#D3D3D3", bg="#000000", font="Serif 24", padx=5, pady=2) label2.place(relx=.1, rely=.1)  hello = "  Привет КулХацкерам    форума codeby! " end = Label(text=hello, justify=LEFT, fg="#FF0000", bg="#000000", font="Arial 12", padx=5, pady=1) end.place(relx=.1, rely=.5)   mixer.init() mixer.music.load("C:key.mp3") mixer.music.play()   C.pack() root.mainloop 

Скачать демооткрытку

Просто из архива извлеките файлы в корень диска С, либо не забудьте в коде поправить пути на картинку и аудио, если это будет другая директория.

Ну вот и чудненько.

Всё это конечно прекрасно и замечательно, но здесь есть одно небольшое "но". Но ведь если вы решите сделать какую-нибудь поздравительную или романтическую открытку для родных или девушки, то маловероятно что они пользуются питоном )))

Этот вопрос тоже решается, но об этом в следующей статье.

UPD:

Смотрел-смотрел я на картинку, и понял что в строке заголовка пёрышко, которое Tkinter нам подсовывает по умолчанию, не в тему)))

Вставим туда иконку с форума. Да только как её туда вставить без танцев с бубном?

Решение совсем несложное пришло - нужно иконку закодировать в Base64. Идём в любой онлайн-декодер, скармливаем иконку, и получаем нужный код. Копируем код, он длиннючий, поэтому в питоне его нужно заключить в тройные кавычки.

icon = ''' iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABRUlEQVQ4jc3SMWtUQRQF4G/e20SM mCpYiGZJJbxdI4KVlUjAZnERG8HGyjY/YCurIP4AsbMT/Al2gqhlTHjTBiSVgtWyLItvxsIXeEQt ZAs9MAyXOedw7p0bqqrKlkCxjPj/MOi19xwzLNoDmzhGauuL+NZyYQNrJwne4Aq20C+COyF4vfdw 9XKMsV8WrgXerZT6Mcb+uTO2sN9t4W4IbsQY52dXFZlnRbA7nuyDlD0NweTTYZzDbOExbkLofOPn sjBI2SNM6zq+hOGgup0Z13XcheGwupSSGuvdGcBmSl4JFhvn3Yftq9Va05iUpTGMbg0cfcnPT8Sn DWRGgXtvP0bQNJ4I3h8cxikcfc0PMqOuJvxmE+NKz/WmsZ2yD5gVhUFg3vyMfqFL7vkV1ffGXs52 2vf1nLzITE+L/5Tgr/DvV3lpgx+THmin4biX1AAAAABJRU5ErkJggg== ''' 

Но чтобы это добро заработало, пропишем следующий код:

img = PhotoImage(data=icon) root.tk.call('wm', 'iconphoto', root._w, img) 

Запускаем... Годно!


Источник: codeby.net

Комментарии: