Python tkinter иконка приложения

Python tkinter иконка приложения

Основным компонентом графических программ является окно. Затем в окно добавляются все остальные компоненты графического интерфейса. В Tkinter окно представлено классом Tk . Например, создание окна:

Для отображения окна и взаимодействия с пользователем у окна вызывается метод mainloop()

from tkinter import * root = Tk() root.mainloop()

Класс Tk обладает рядом методов и атрибутов, которые позволяют установить различные аспекты окна. Некоторые из них.

Размеры и начальная позиция окна

По умолчанию окно имеет некоторые стандартные размеры. Для установки размеров используется метод geometry() . Например, определение окна с шириной в 300 единиц и высотой 250 единиц:

from tkinter import * root = Tk() root.geometry("300x250") root.mainloop()

По умолчанию окно позиционируется в верхний левый угол экрана с небольшим смещением. Но мы можем изменить его положение, передав нужные значения в метод geometry() :

from tkinter import * root = Tk() root.geometry("300x250+400+200") root.mainloop()

Теперь строка в методе geometry имеет следующий формат: «Ширина x Высота + координатаX + координатаY». То есть при запуске окно шириной в 300 единиц и высотой 250 единиц будет находиться на 400 пикселей вправо и на 200 пикселей вниз от верхнего левого угла экрана.

Для получения данных о размере и позиции также можно использовать метод geometry() , который возвращает данные значения в виде строки в формате «widthxheight+x+y»:

from tkinter import * root = Tk() root.geometry("300x250+400+200") root.update_idletasks() print(root.geometry()) # "300x250+400+200" root.mainloop()

Чтобы приложение еще до метода mainloop() принименило для окна переданные ему значения по ширине, высоте и позиции, вызывается метод root.update_idletasks() . В итоге вызов root.geometry() возвратить строку «300×250+400+200»

Читайте также:  Editor application in java

По умолчанию мы можем изменять размеры окна. Тем не менее иногда может потребоваться сделать размер окна фиксированным. В этом случае мы можем использовать метод resizable() . Его первый параметр указывает, может ли пользователь растягивать окно по ширине, а второй параметр — можно ли растягивать по высоте. Чтобы запретить растягивание по какой-либо стороне, необходимо для соответствующего параметра передать значение False . Например, запретим какое-либо изменение размеров:

from tkinter import * root = Tk() root.geometry("300x250") root.resizable(False, False) root.mainloop()

Также можно установить минимальные и максимальные размеры окна:

root.minsize(200,150) # минимальные размеры: ширина - 200, высота - 150 root.maxsize(400,300) # максимальные размеры: ширина - 400, высота - 300

Установка заголовка

По умолчанию заголовок окна — «tk». Для установки заголовка применяется метод title() , в который передается текст заголовка:

from tkinter import * root = Tk() root.title("Hello METANIT.COM") root.geometry("300x250") root.mainloop()

Заголовок и размеры окна в thinkter в Python

Установка иконки

Перед заголовком отображается иконка. По умолчанию это иконка пера. С помощью метода iconbitmap() можно задать любую другую иконку. Например, определим в одной папке с файлом приложения какой-нибудь файл с иконкой, допустип, он называется «favicon.ico» и используем его для установки иконки:

from tkinter import * root = Tk() root.title("Hello METANIT.COM") root.iconbitmap(default="favicon.ico") root.geometry("300x250") root.mainloop()

через параметр default в метод iconbitmap передается путь к иконки. В данном случае файл иконки располагается с файлом приложения в одной папке, поэтому в качестве пути указывается просто имя файла.

Иконка окна в thinkter в Python

В качестве альтернативы для установки иконки также можно было бы использовать метод iconphoto()

from tkinter import * root = Tk() root.geometry("250x200") root.title("Hello METANIT.COM") icon = PhotoImage(file = "icon2.png") root.iconphoto(False, icon) root.mainloop()

Первый параметр метода iconphoto() указывает, надо ли использовать иконку по умолчанию для всех окон приложения. Второй параметр — объект PhotoImage, который собственно и устанавливает файл изображения (здесь файл «icon2.png)

Однако что, если мы хотим, чтобы окно вообще не имело иконки? В этом случае можно определить прозрачную иконку и также ее подключать. Можно это сделать также динамически без наличия реального файла:

from tkinter import * import tempfile, base64, zlib ICON = zlib.decompress(base64.b64decode("eJxjYGAEQgEBBiDJwZDBysAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc=")) _, ICON_PATH = tempfile.mkstemp() with open(ICON_PATH, "wb") as icon_file: icon_file.write(ICON) root = Tk() root.title("Hello METANIT.COM") root.geometry("300x250") root.iconbitmap(default=ICON_PATH) root.mainloop()

В данном случае создается временный файл иконки в памяти.

Перехват закрытия окна

from tkinter import * def finish(): root.destroy() # ручное закрытие окна и всего приложения print("Закрытие приложения") root = Tk() root.geometry("250x200") root.title("Hello METANIT.COM") root.protocol("WM_DELETE_WINDOW", finish) root.mainloop()

Первый параметр метода protocol() представляет имя события, в данном случае это «WM_DELETE_WINDO». Второй параметр представляет функцию, которая вызывается при возникновении события. Здесь эта функция finish() , в котором с помощью метода destroy() вручную вызываем закрытие окна (а с ним и всего приложения), а затем выводим на консоль некоторое сообщение.

Атрибуты окна

С помощью специального метода attributes() можно установать отдельные атрибуты окна, для которых нет специальных методов. В качестве первого параметра метод принимает название атрибута, которое предваряется дефисом. А второй параметр — значение для этого атрибута. Например, растяжение окна на весь экран:

root.attributes("-fullscreen", True)

Здесь атрибуту fullscreen передается значение True, благодаря чему устанавливается полноэкранный режим.

Другой пример — установка прозрачности с помощью атрибута alpha :

Значение 0.5 указывает на полупрозрачность.

Третий пример — отключение верхней панели окна (за исключением заголовка и крестика для закрытия):

root.attributes("-toolwindow", True)

Источник

Как установить иконку окна в Tkinter

Как установить иконку окна в Tkinter

  1. root.iconbitmap для установки иконки окна
  2. tk.call(‘wm’, ‘Iconphoto’, ) Метод установки иконки окна
  3. root.iconphoto для установки иконки окна

Мы познакомим вас с методами установки иконки окна в Tkinter.

  1. root.iconbitmap для установки иконки окна
  2. root.tk.call() для установки иконки окна
  3. root.iconphoto для установки иконки окна

root.iconbitmap для установки иконки окна

import tkinter as tk root = tk.Tk()  root.iconbitmap('/path/to/ico/icon.ico') root.mainloop() 

iconbitmap(bitmap) устанавливает иконку виджета окна/кадра в bitmap . bitmap должен быть ico типа, но не png или jpg типа, иначе изображение не будет отображаться как иконка.

Иконка окна набора

На изображении выше видно, когда в iconbitmap используется тип ico .

Если вы используете тип png , то иконка, показанная в окне, будет пустой,

Иконка окна кинтерного набора с помощью png

tk.call(‘wm’, ‘Iconphoto’, ) Метод установки иконки окна

import tkinter as tk root = tk.Tk()  root.tk.call('wm', 'iconphoto', root._w, tk.PhotoImage(file='/path/to/ico/icon.png')  root.mainloop() 

Метод tk.call — это интерфейс Tkinter к интерпретатору tcl . Мы можем запустить команду tcl , используя этот метод call .

Это удобно, когда обёртка Tkinter не может иметь доступ к некоторым возможностям tcl/tk .

wm общается с оконным менеджером.

Нам нужно установить изображение как tk.PhotoImage , но не само изображение, иначе мы получим ошибку _tkinter.TclError .

root.iconphoto для установки иконки окна

Другой метод установки иконки окна — это использование метода root.iconphoto() , который принимает больше типов изображений, как в tk.call(‘wm’, ‘iconphoto’, ) .

import tkinter as tk root = tk.Tk()  root.iconphoto(False, tk.PhotoImage(file='/path/to/ico/icon.png')) root.mainloop() 

Здесь False означает, что это изображение иконки применимо только к этому конкретному окну, но не к будущим созданным toplevels .

Если используется True , то изображение иконки применяется и ко всем будущим создаваемым toplevels .

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

Источник

How to change Tkinter Window Icon (iconbitmap)

In this Tkinter tutorial we will explore how to change the default window Icon. Often when building custom software, you need to change the default icon to something more meaningful, like a logo for your company or software. (Also because the default one makes your software look like it was a low-effort job)

Creating a Tkinter Window

To change the icon of a Tkinter window, you need to first create a Tk object and a Tkinter window:

import tkinter as tk # Create a Tk object root = tk.Tk() # Set the window title root.title("My Window") # Start the Tkinter event loop root.mainloop()

If we run this code we get the following output.

How to change Tkinter Window Icon

We have circled the default icon in the above image. Our goal is to now change this. (This code was run on the Window 11 OS. The look of the window/icon might be a bit different based on the OS you are using).

Changing the Icon of Tkinter Window

Once you have created a Tkinter window, you can use the iconbitmap method to change its icon. The iconbitmap method takes the path to an icon file ( .ico ) as its argument and sets the icon of the window to the image in the file.

Here is an example of how you can use the iconbitmap method to change the icon of a Tkinter window:

import tkinter as tk root = tk.Tk() # Set the window title root.title("My Window") # Set the window icon root.iconbitmap("my_icon.ico") root.mainloop()

We have included a few .ico files as a download here for you to try out.

Notes

  • The iconbitmap method only works with certain image formats, such as .ico on Windows and .png on macOS.
  • The image file must be in a specific size and format for the icon to display correctly. For more information, you can check the documentation for the iconbitmap method on the Tkinter website.
  • If the iconbitmap method is called with an invalid file path or an unsupported image format, the icon of the window will not be changed.

Using PNG as Icons on Windows

If you use the iconbitmap() function with a png file, it most likely won’t work. In that case, there is another method that you can use, called iconphoto() .

Here is a small example showing you how to use it.

import tkinter as tk root = tk.Tk() # Set the window title root.title("My Window") # Set the window icon root.iconphoto(False, tk.PhotoImage(file="closeIcon.png")) root.mainloop()

The first parameter is a boolean value, which controls whether or whether not the Icon should also be applied to any TopLevel windows created. The second parameter is a Tkinter PhotoImage object, which is created using a file name or file path of our icon file.

This marks the end of the How to change Tkinter Window Icon using iconbitmap)? Tutorial. Any suggestions or contributions for CodersLegacy are more than welcome. Questions about the tutorial content can be asked in the comments section below.

Источник

Оцените статью