Resumo : neste tutorial, você aprenderá como desenvolver um aplicativo Tkinter na bandeja do sistema.
Introdução aos aplicativos da bandeja do sistema Tkinter
Um aplicativo da bandeja do sistema é um tipo de aplicativo executado em segundo plano e fornece acesso rápido a algumas funções.
O aplicativo da bandeja do sistema normalmente aparece como um pequeno ícone na bandeja do sistema ou em áreas de notificação na barra de tarefas do ambiente Windows, macOS ou Linux Desktop.
Alguns exemplos comuns de aplicativos da bandeja do sistema são software antivírus, clientes de mensagens instantâneas ou software de monitoramento de sistema.
Os usuários podem interagir com o aplicativo da bandeja do sistema clicando nele para acessar um menu e realizar ações específicas.
O Tkinter não possui suporte integrado para o aplicativo da bandeja do sistema, mas você pode usar a PyStray
biblioteca de terceiros para criá-lo.
Exemplo de aplicação da bandeja do sistema Tkinter
A criação de um aplicativo na bandeja do sistema usando o Tkinter e PyStray
o pacote envolve as seguintes etapas:
Etapa 1. Instale as bibliotecas Pystray e Pillow
Instale as bibliotecas Pystray e Pillow usando o comando pip . O Pystray permite criar um aplicativo de bandeja e o Pillow ajuda a criar um ícone colocado na bandeja do sistema.
pip install pystray pillow
Linguagem de código: Python ( python )
Etapa 2. Crie um aplicativo Tkinter na bandeja do sistema
Crie um script Python e use o seguinte código:
import tkinter as tk
import pystray
from PIL import Image
class MyApp(tk.Tk):
def __init__(self):
super().__init__()
self.title("System Tray App")
self.geometry('500x250')
self.protocol('WM_DELETE_WINDOW', self.minimize_to_tray)
def minimize_to_tray(self):
self.withdraw()
image = Image.open("app.ico")
menu = (pystray.MenuItem('Quit', self.quit_window),
pystray.MenuItem('Show',self.show_window))
icon = pystray.Icon("name", image, "My App", menu)
icon.run()
def quit_window(self, icon):
icon.stop()
self.destroy()
def show_window(self, icon):
icon.stop()
self.after(0,self.deiconify)
if __name__ == "__main__":
app = MyApp()
app.mainloop()
Linguagem de código: Python ( python )
Saída:
O app.ico
pode ser baixado aqui:
Como funciona.
Primeiro, importe as bibliotecas necessárias:
import tkinter as tk
import pystray
from PIL import Image
Linguagem de código: Python ( python )
Segundo, defina uma nova MyApp
classe que estenda a tk.Tk
classe. No construtor __init__()
, vincule o evento close ao método minimize_to_tray()
:
self.protocol('WM_DELETE_WINDOW', self.minimize_to_tray)
Linguagem de código: Python ( python )
Ao clicar no botão Fechar, o minimize_to_tray()
método será executado criando um ícone na bandeja do sistema.
Terceiro, defina o minimize_to_tray()
método que minimiza a janela principal na bandeja do sistema:
def minimize_to_tray(self):
self.withdraw()
image = Image.open("app.ico")
menu = (pystray.MenuItem('Quit', self.quit_window),
pystray.MenuItem('Show',self.show_window))
icon = pystray.Icon("name", image, "My App", menu)
icon.run()
Linguagem de código: Python ( python )
No método:
Oculta self.withdraw()
a janela principal sem destruí-la. Esta é a etapa necessária para minimizar a janela principal na bandeja do sistema:
def minimize_to_tray(self):
# Hide the main window
self.withdraw()
Linguagem de código: Python ( python )
O seguinte chama o open()
método da classe Image para carregar o app.ico
que será usado como ícone da bandeja do sistema:
# Open the image for the system tray icon
image = Image.open("app.ico")
Linguagem de código: Python ( python )
O seguinte define um menu para o ícone da bandeja do sistema, que contém dois PyStray
MenuItem
objetos:
menu = (pystray.MenuItem('Quit', self.quit_window),
pystray.MenuItem('Show', self.show_window))
Linguagem de código: Python ( python )
Os itens de menu Quit
e Show
estão associados aos métodos self.quit_window
e self.show_window
respectivamente.
A linha a seguir cria um PyStray
ícone com a imagem e o menu especificados:
icon = pystray.Icon("name", image, "My App", menu)
Linguagem de código: Python ( python )
O seguinte chama o run()
método do Icon
objeto para tornar o ícone ativo na bandeja do sistema:
icon.run()
Linguagem de código: Python ( python )
A icon.run
linha () inicia o PyStray
loop de eventos, tornando o ícone ativo na bandeja do sistema. Agora ele responderá às interações do usuário, como cliques nos itens do menu.
Quarto, defina o item de menu quit_window()
associado Quit
na bandeja do sistema. Ao selecionar a Quit
opção no menu de ícones da bandeja do sistema, ela interrompe o PyStray
loop de eventos ( icon.stop
()) e destrói a janela principal, garantindo uma saída limpa do aplicativo ( self.destroy
())
def quit_window(self, icon):
icon.stop()
self.destroy()
Linguagem de código: Python ( python )
Quinto, defina o show_window()
método associado ao Show
item de menu no ícone da bandeja do sistema:
def show_window(self, icon):
icon.stop()
self.after(0,self.deiconify)
Linguagem de código: Python ( python )
Quando você seleciona a opção Mostrar no menu do ícone da bandeja do sistema, ele fecha o ícone da bandeja do sistema (interrompe o PyStray
loop de eventos) e usa o after()
método para agendar o deiconify()
método a ser chamado imediatamente, resultando na restauração do aplicativo principal e tornando-se visível novamente.
Resumo
- Use a
PyStray
biblioteca para criar um aplicativo Tkinter na bandeja do sistema.