Как сделать иконку для программы python
Многие программы на сегодняшний день используют графический интерфейс, который более интуитивен и удобен для пользователя, чем консоль. И с помощью языка программирования Python также можно создавать графические программы. Для этого в Python по умолчанию применяется специальный тулкит - набор компонентов, который называется tkinter .
Тулкит tkinter доступен в виде отдельного встроенного модуля, который содержит все необходимые графические компоненты - кнопки, текстовые поля и т.д.
Базовым моментом в построении графических программ является создание окна. Затем в окно добавляются все остальные компоненты графического интерфейса. Поэтому создадим вначале простейшее окно. Для этого определим следующий скрипт:
Для создания графического окна применяется конструктор Tk() , который определен в модуле tkinter. Создаваемое окно присваивается переменной root, и через эту переменную мы можем управлять атрибутами окна. В частности, с помощью метода title() можно установить заголовок окна.
С помощью метода geometry() - размер окна. Для установки размера в метод geometry() передается строка в формате "Ширина x Высота". Если при создании окна приложения метод geometry() не вызывается, то окно занимает то пространство, которое необходимо для размещения внутреннего содержимого.
Для отображения окна надо вызвать у него метод mainloop() , который запускает цикл обработки событий окна для взаимодействия с пользователем.
В результате при запуске скрипта мы увидим такое пустое окошко:
Начальная позиция окна
По умолчанию окно позиционируется в верхний левый угол экрана. Но мы можем изменить его положение, передав нужные значения в метод geometry() :
Теперь строка в методе geometry имеет следующий формат: "Ширина x Высота + координатаX + координатаY". То есть при запуске окно будет находиться на 300 пикселей вправо и на 250 пикселей вниз от верхнего левого угла экрана.
Я разрабатываю игру на Python, и мне было интересно, как придать ей собственную иконку. Я использую компьютер с операционной системой Windows, и с Python у меня не установлено ничего лишнего. О, также я использую версию 3.3 Это даже возможно.
PS Я нашел другие вещи в переполнении стека, но они используют разные компьютеры, такие как Ubuntu и Macintosh
Есть два шага: сначала собрать исполняемый файл Python. Для этого вам понадобится что-то вроде py2exe, "которое преобразует скрипты Python в исполняемые программы Windows, способные работать без установки Python".
Затем, когда у вас есть исполняемый файл, чтобы дать ему значок, вы можете использовать ответ на этот вопрос: добавьте значок в существующий EXE-файл из командной строки для этого последнего штриха.
Вы не можете добавить пользовательский значок в простой скрипт Python, но если вы преобразуете его в исполняемый файл Windows, используя py2exe, вы можете указать ресурсы значков, которые будут использоваться для него. На их вики есть инструкции.
Решение @dmitri работает, но Py2Exe остановил разработку на python 3.4 и не будет работать с более новыми версиями. PyInstaller также сделает это.
Python версии 3.7.3.
Ты не можешь В Windows пользовательские значки могут быть назначены только определенным типам файлов (в основном исполняемым файлам и ярлыкам), и сценарии Python не относятся к таким типам.
Если вы пытаетесь изменить значок ярлыка для вашей программы
тогда вам нужно добраться до файла, где бы он ни находился
затем перетащите этот ярлык на рабочий стол
затем щелкните правой кнопкой мыши этот ярлык и выберите свойства
затем нажмите "Изменить значок"
затем перейдите туда, где ваше изображение.ico сохраняется и установите его в качестве значка
если вы сделаете это и откроете свою программу, в углу будет выбран выбранный файл.ico, а на рабочем столе будет отображаться значок ico вместо изображения python.
это то, как вы меняете значок ярлыка, но нет способа изменить действительный значок окна в углу, если вы не используете что-то вроде Tk или Pygame
Вы не можете добавлять значки в скрипты, но для ваших целей вы также можете рассмотреть возможность преобразования вашего скрипта в exe. Есть много способов сделать это
Одним из самых простых решений для этого является auto-py-to-exe, это удобное и простое решение для преобразования ".py" в ".exe", оно также позволяет вам выбирать значки, дополнительные файлы и т. Д. Очень с легкостью.
Чтобы установить с помощью pip, просто введите это в командной строке
Чтобы запустить программу после установки, введите это в командной строке
Tkinter — это модуль Python, который используется для создания приложений с графическим интерфейсом пользователя с помощью разнообразных виджетов и функций. Как и любой другой модуль GUI, он также поддерживает изображения, т.е. вы можете использовать изображения в приложении, чтобы сделать его более привлекательным.
Изображение можно добавить с помощью метода PhotoImage() . Это метод Tkinter, который означает, что вам не нужно импортировать любой другой модуль, чтобы использовать его.
Важное замечание: Если на кнопке указаны как изображение, так и текст, текст будет преобладать, и на кнопке будет отображаться только изображение. Но если вы хотите показать как изображение, так и текст, вы должны передать составные в настройках кнопки.
Button(master, text = "Button", image = "image.jpg", compound=LEFT)
compound = LEFT -> image will be at left side of the button
compound = RIGHT -> image will be at right side of button
compound = TOP -> image will be at top of button
compound = BOTTOM -> image will be at bottom of button
Синтаксис:
любой допустимый путь, доступный на вашем локальном компьютере.
Код № 1:
from tkinter import *
from tkinter.ttk import *
Label(root, text = 'GeeksforGeeks' , font = (
'Verdana' , 15 )).pack(side = TOP, pady = 10 )
photo = PhotoImage( file = r "C:\Gfg\circle.jpg" )
Button(root, text = 'Click Me !' , image = photo).pack(side = TOP)
Выход:
При выводе обратите внимание, что на кнопке отображается только изображение, а размер кнопки также больше обычного размера, потому что мы не установили размер изображения.
Код № 2: для отображения как изображения, так и текста на кнопке .
from tkinter import *
from tkinter.ttk import *
Label(root, text = 'GeeksforGeeks' , font = (
'Verdana' , 15 )).pack(side = TOP, pady = 10 )
photo = PhotoImage( file = r "C:\Gfg\circle.jpg" )
photoimage = photo.subsample( 3 , 3 )
Button(root, text = 'Click Me !' , image = photoimage,
compound = LEFT).pack(side = TOP)
Выход:
Обратите внимание, что как текст, так и изображение появляются, а размер изображения также невелик.
Я разрабатываю игру на Python и задаюсь вопросом, как дать ей свой значок. Я использую компьютер с Windows и не устанавливаю никаких дополнительных функций с Python. О, я также использую версию 3.3. Возможно ли это.
P.S Я нашел другие вещи в Stack Overflow, но они используют разные компьютеры, такие как Ubuntu и Macintosh
Есть два шага: сначала создайте исполняемый файл Python. Для этого вам понадобится что-то вроде py2exe, который преобразует скрипты Python в исполняемые программы Windows, которые могут запускаться без необходимости установки Python. "
Затем, как только у вас будет свой исполняемый файл, чтобы дать ему значок, вы можете использовать ответ на этот вопрос: Добавить значок в существующий EXE файл из командной строки для этого завершающего касания.
Вы не можете добавить пользовательский значок в простой скрипт Python, но если вы преобразуете его в исполняемый файл Windows, используя py2exe, вы можете указать ресурсы значков, которые будут использоваться для него. Там есть инструкции на их вики.
Вы не можете. В Windows пользовательские значки могут быть назначены только определенным типам файлов (обычно исполняемые файлы и ярлыки), а скрипты Python не являются одним из этих типов.
Если вы пытаетесь изменить значок ярлыка для вашей программы
тогда вам нужно попасть в файл, где он когда-либо щелкнул правой кнопкой мыши и запустил ярлык
затем перетащите этот ярлык на рабочий стол youre
затем щелкните правой кнопкой мыши этот ярлык и щелкните свойства
затем нажмите "Изменить значок"
затем перейдите к месту сохранения вашего изображения .ico и установите его как значок
если вы сделаете это, и вы откроете свою программу в углу, будет выбран .ico, и на рабочем столе youre будет отображаться значок ico вместо изображения python.
как вы меняете значок ярлыка, но нет способа изменить значок окна в углу, если вы не используете что-то вроде Tk или Pygame
Графический интерфейс – неотъемлемая составляющая любого современного приложения. Даже во времена MS DOS, несмотря на тотальное доминирование командной строки в те времена, все равно начали появляться первые графические интерфейсы. Чего только стоит легендарный файловый менеджер Norton Commander? А для создания игр работа с графическими интерфейсами вообще является приоритетной.
В Python работа с графическими интерфейсами осуществляется с помощью библиотеки Tkinter. Она предустановлена в язык, поэтому ее можно использовать сразу, без дополнительной установки.
Пример приложения, созданного с применением Tkinter – IDLE. Это очень популярная среда разработки приложений для Python.
Рекомендуется пользоваться Python 3.7 для того, чтобы проверять нашу инструкцию. Дело в том, что третья версия претерпела настолько существенные изменения, что использование второй версии уже далеко от реального программирования.
В этой инструкции мы будем подразумевать, что базовое представление о Python у Вас уже есть. Мы же будем говорить о том, как создавать окно, что такое виджеты и как их добавить и редактировать. Давайте начинать.
Создаем свой первый графический интерфейс
Перед тем, как использовать эту библиотеку, ее следует импортировать. После этого уже можно прописывать строки для настройки окна.
from tkinter import *
window.mainloop()
Все, теперь мы создали приложение с графической оболочкой. Поздравляем.
Обратите внимание на последнюю строку . Она содержит метод mainloop(), который принадлежит объекту window. Она нужна для того, чтобы зациклить отображение окна. Если ее не использовать, то окно сразу закроется, и пользователь ничего не увидит.
Создаем виджет Label
Сначала необходимо добавить виджет. Для этого объявляется переменная (в нашем случае – lbl ) с использованием следующего кода.
После этого мы задаем место, в котором будет размещаться наша надпись. В нашем случае это будет самый верх окна слева. Соответственно, необходимо задать такое положение:
lbl.grid(column=0, row=0)
После того, как мы добавим эти строки в приведенный выше код (а добавлять их надо после той строки, где задается заголовок), получится следующий.
from tkinter import *
lbl.grid(column=0, row=0)
window.mainloop()
Вызов метода grid – обязательный. Иначе пользователь не увидит текста, который мы захотели .
Настраиваем размер и шрифт текста
Этот параметр может использоваться, в том числе, и для других виджетов. Его можно применять не только к надписи. Если в виджете есть шрифт, его можно изменять.
Настраиваем размеры окна приложения
Программа у нас получилась отличная, конечно. Но, скажите, чего-то не хватает. Все правильно, окошко хотелось бы побольше. Что можно сделать для того, чтобы увеличить его?
window.geometry(‘500x350’)
Эта строка делает размер окна по ширине 500 пикселей, а по высоте – 250.
Видим, что нет ничего сложного. Но этого явно недостаточно для создания функционального приложения, которое будет взаимодействовать с пользователем. Например, не хватает кнопок. Давайте посмотрим, как добавлять на наше окно кнопку и обрабатывать ее нажатие.
Добавляем виджет Button
Теперь нам нужно добавить кнопку. Чтобы это сделать, необходимо создать объект соответствующего класса, а в свойствах задать текст, который будет на ней отображаться.
btn.grid(column=1, row=0)
Мы добавили кнопку после метки в коде. В целом, у нас получилась такая программа.
from tkinter import *
window.geometry(‘400x250’)
lbl.grid(column=0, row=0)
btn.grid(column=1, row=0)
window.mainloop()
После того, как этот код будет запущен, получится следующий результат.
Заметьте, что в коде выше мы указали позиционирование кнопки во втором столбце. Но поскольку индексация начинается с нуля, то, соответственно, мы написали индекс столбца 1. Если же его разместить с координатами 0,0, то он просто заменит надпись.
Как изменить цвет текста и фона у Button?
Кастомизация кнопок не ограничивается одним лишь изменением размера и начертания шрифтов. Например, можно сделать кнопку черной, а буквы на ней – красными. Для этого надо прописать соответствующие свойства: fg и bg. Они позволяют настроить цвет надписи и фон соответственно.
Точно так же, как и с размером и начертанием шрифта, с помощью этих свойств можно редактировать внешний вид любого другого элемента, не только кнопки.
А теперь приведем пример кода, с помощью которого мы сделали надпись кнопки красной на черном фоне.
Хорошо, а что сейчас будет, если нажать на кнопку? Если вы попробовали у себя написать аналогичный код, то вы увидите, что ничего не произойдет. Дело в том, что не был настроен обработчик события. Это такая функция, которая активируется при наступлении определенного события.
Кнопка Click
Давайте попробуем прописать действия приложения на случай, если пользователь таки попробует нажать на эту кнопку. Как это делается?
Для начала необходимо прописать ту функцию, которая активируется при нажатии кнопки (то есть, будет служить обработчиком событий).
def clicked():
После этого она прописывается в качестве свойства command таким образом:
Заметьте, что мы используем название функции обработчика событий без скобок.
Вот, что уже умеет наша программа. Но это еще не все.
Получение ввода при помощи класса Entry (текстовое поле Tkinter)
Раньше мы рассматривали самые простые виджеты, которые работали на вывод и простейший ввод (в виде нажатия кнопки). Теперь же мы рассмотрим, как вводить конкретную информацию в поле ввода, используя класс Entry. С его помощью можно добавить в программу такое текстовое поле, которое вы привыкли видеть в других приложениях.
Чтобы его добавить, необходимо создать объект соответствующего класса и присвоить его переменной. Для этого используется следующая строка кода.
txt = Entry(window, width=10)
Но, как вы уже поняли, этого недостаточно. Текстовое поле, равно как и любой другой объект, необходимо добавить к окну. Для этого используется функция grid . Например, так будет выглядеть поле ввода, размещенное во втором столбце (то есть, столбце, имеющем индекс 1). Соответственно, пришлось переместить кнопку немного правее.
Итоговый код получился следующим.
from tkinter import *
def clicked():
window.geometry(‘400x250’)
lbl.grid(column=0, row=0)
txt = Entry(window,width=10)
txt.grid(column=1, row=0)
btn.grid(column=2, row=0)
window.mainloop()
Ну, соответственно, программа будет выглядеть так.
Эта задача достигается с помощью функции get . Соответственно, запишем следующий код.
def clicked():
lbl.configure(text=res)
Ну и небольшая демонстрация окна программы, в которой реализован этот функционал.
Фокус виджета ввода
А знаете, в чем еще проблема этого приложения? В том, что нужно вручную настраивать фокус ввода. То есть, нельзя сразу вводить текст после того, как программа запустится. Как же осуществить автоматическую настройку фокуса? Для этого необходимо вызвать одноименную функцию.
При запуске кода вы увидите, что текст можно будет написать сразу, поскольку курсор стоит непосредственно в поле ввода. Это значительно упрощает взаимодействие с программой.
Отключение виджета ввода
txt = Entry(window,width=10, state=’disabled’)
После того, как вы запустите программу, вы увидите, что поле ввода заблокировано, и не имеете никакой возможности ввести текст. Применений этой возможности много. Например, блокировка поля пароля при трехразовом неправильном вводе.
Добавляем виджет Combobox
Combobox – это выпадающий список. Чтобы его добавить, необходимо создать объект соответствующего класса.
from tkinter.ttk import Combobox
combo = Combobox(window)
Далее необходимо присвоить значения для поля ввода и разместить поле ввода в подходящее место окна.
combo.grid(column=0, row=0)
Возможно также использование функции get , чтобы получить содержимое списка.
Добавляем виджет Checkbutton (чекбокс)
Чтобы добавить виджет Checkbutton, необходимо добавить объект соответствующего класса.
from tkinter.ttk import Checkbutton
chk = Checkbutton(window, text=’Выбрать’)
Если передать объекту var=chk_state , то можно задать значение по умолчанию.
Установка состояния с помощью intvar()
Чтобы чекбокс сделать с поставленной галочкой или пустым, используется метод set с соответствующим индексом. Если нужно сделать так, чтобы он был активирован, то в качестве аргумента этой функции используется 1. Если же надо, чтобы он был деактивирован, то используется 0 в качестве аргумента. Перед тем, как это использовать, необходимо присвоить соответствующему чекбоксу функцию intvar() .
chk_state = IntVar()
Установка состояния с помощью booleanvar()
Устанавливать состояние чекбокса можно и с помощью функции BooleanVar . В этом случае метод set устанавливается на значение True или False .
chk_state = BooleanVar()
Результат от использования BooleanVar и IntVar одинаковые. Можно использовать тот, который больше нравится.
Добавляем виджеты RadioButton
Радиокнопки – один из любимых виджетов пользователей любых программ. Выглядят они так.
Чтобы их добавить, действия аналогичные предыдущим, только присоединяется класс Radiobutton.
rad1 = Radiobutton(window, text=’Первый’, value=1)
rad2 = Radiobutton(window, text=’Второй’, value=2)
rad3 = Radiobutton(window, text=’Третий’, value=3)
И, аналогично предыдущим виджетам, необходимо задать позицию радиокнопок. Они должны располагаться на разных местах.
Также можно настроить радиокнопку так, чтобы она работала, как обычная кнопка. То есть, можно сделать обработчик события на нажатие. Делается это таким образом.
rad1 = Radiobutton(window,text=’Первая’, value=1, command=clicked)
def clicked():
Получаем значение Radio Button (избранная Radio Button)
Для получения значения радиокнопки и той, которая сейчас выбрана, необходимо передать соответствующий параметр переменной, а потом просто получить ее значение.
Для этого прописывается сама переменная, а ей присваивается функция IntVar . А номер кнопки передается в качестве свойства value .
Добавляем виджет ScrolledText (текстовая область Tkinter)
Чтобы добавить большое текстовое поле, необходимо присвоить соответствующей переменной объект класса ScrolledText:
from tkinter import scrolledtext
txt = scrolledtext.ScrolledText(window,width=40,height=10)
Видим, что в свойствах необходимо указать ширину и высоту. Можно этого не делать. В таком случае текстовое поле займет область всего окна.
Результат получится приблизительно следующим.
Настраиваем содержимое
Настройка содержимого большого текстового поля осуществляется с помощью метода insert . Смотрите, как это работает.
txt.insert(INSERT, ‘Поле для ввода текста’)
Удаление/Очистка содержимого Scrolledtext
Очистить содержимое текстового поля очень просто. Для этого используется функция delete , которая работает вместе с объектом. В скобках указываются координаты, начиная с какой позиции и до какой требуется убрать содержимое текстового поля.
txt.delete(1.0, END)
Всплывающие окна – важные составляющие любого программного обеспечения. Они позволяют быстро проинформировать пользователя о чем-то, не изменяя содержимого основного окна.
Они создаются таким образом.
from tkinter import messagebox
messagebox.showinfo(‘Заголовок’, ‘Текст’)
Например, можно прописать обработчик клика по кнопке, в котором предусмотрено всплывающее окно.
Также возможна настройка показа предупреждающего окна или же уведомления об ошибках. Отличается только функция, которая отображает окно.
Показ диалоговых окон с выбором варианта
Диалоговые окна бывают разными. Например, можно настроить показ такого окна, который выдавал бы варианты ответа. Если вы знаете язык, вы с легкостью догадаетесь, что означает каждая из этих команд.
res = messagebox.askquestion(‘Заголовок’, ‘Текст’)
res = messagebox.askyesno(‘Заголовок’, ‘Текст’)
res = messagebox.askyesnocancel(‘Заголовок’, ‘Текст’)
res = messagebox.askokcancel(‘Заголовок’, ‘Текст’)
res = messagebox.askretrycancel(‘Заголовок’, ‘Текст’)
Но есть еще функция, которая возвращает три значения – True/False/None в зависимости от выбранной кнопки. Это метод askyesnocancel .
Добавление SpinBox (Виджет спинбокс)
Spinbox – это такое поле ввода со стрелками. Добавляется он с помощью команды
spin = Spinbox(window, from_=0, to=100)
Соответственно, параметры from и to отвечают за диапазон допустимых значений.
Значение по умолчанию для Spinbox
Чтобы указать значение по умолчанию, нужно передать параметр textvariable .
spin = Spinbox(window, from_=0, to=100, width=5, textvariable=var)
Добавляем виджет Progressbar
Как и с предыдущими вариантами, для добавления шкалы прогресса, нужно использовать соответствующий класс.
from tkinter.ttk import Progressbar
bar = Progressbar(window, length=200)
Меняем цвет Progressbar
Схема изменения цвета Progressbar довольно сложная и требует отдельного рассмотрения. В целом, механика следующая: нужно создать стиль, задать цвет фона, а потом перенести его на Progressbar.
Добавляем поле загрузки файла
Поле открытия файла относится к классу filedialog . Соответственно, добавить его можно с помощью следующего кода.
from tkinter import filedialog
file = filedialog.askopenfilename()
Все эти фрагменты приводятся, как примеры. Вы подставляете свои значения, исходя из ваших задач .
Указываем тип файлов (расширение фильтра файлов)
Для этого нужно использовать параметр filetypes . При этом требуется указать расширение в tuples.
Добавление панели меню
Для работы с меню существует соответствующий класс menu .
menu = Menu(window)
menu.add_command(label=’Файл’)
window.config(menu=menu)
Видим, что сначала создается меню, а потом добавляются команды. А добавление подменю осуществляется так.
menu.add_cascade(label=’Автор’, menu=new_item)
Добавляем виджет Notebook (управление вкладкой)
Также Python позволяет создавать вкладки. Последовательность действий довольно сложная, и эта тема требует отдельного рассмотрения:
- Создается объект класса Notebook.
- Создается вкладка.
- Вкладка добавляется в элемент управления вкладками и осуществляется запаковка с целью отображения его в окне.
Добавляем виджет на вкладку
Чтобы добавить виджет на вкладку, необходимо назначить родительское свойство той, на которую осуществляется добавление.
Добавляем интервал для виджетов (заполнение)
Для этого используются свойства padx и pady.
lbl1 = Label(tab1, text= ‘label1’, padx=5, pady=5)
Как видим, тема очень обширная, и работа с каждым действием, описанным выше, требует отдельной статьи. Тем не менее, хочется надеяться, что Вы получили общее представление о том, как работать с графическим интерфейсом в Python.
Читайте также: