CanalQb - Python (BeeWare e Toga) - Trabalhando com Widgets
Python BeeWare e Toga Trabalhando com Widgets
1. Button
button = toga.Button('Clique Aqui', on_press=callback)
import togafrom toga import Button, Labelfrom toga.style import Packfrom toga.constants import COLUMNdef on_button_click(widget):# Modifica o texto do labellabel.text = "Você clicou no botão!"def build(app):# Criação do label (inicialmente com texto vazio)global labellabel = Label('Clique no botão abaixo', style=Pack(padding=20))# Criação do botãobutton = Button('Clique Aqui', on_press=on_button_click, style=Pack(padding=20))# Criação de um layout com os elementosbox = toga.Box(children=[label, button], style=Pack(direction=COLUMN, padding=20))return boxdef main():# Criando a aplicação Togaapp = toga.App('Exemplo de Toga', 'org.exemplo.toga', startup=build)return app# Se rodando diretamente, iniciar a aplicaçãoif __name__ == "__main__":main().main_loop()
2. Label
label = toga.Label('Texto aqui')
3. TextInput
text_input = toga.TextInput(placeholder='Digite algo')
import togafrom toga.style import Packfrom toga.style.pack import COLUMNclass MeuApp(toga.App):def startup(self):# Criação do widget TextInputtext_input = toga.TextInput(placeholder='Digite algo', style=Pack(padding=10))# Layout do aplicativobox = toga.Box(children=[text_input], style=Pack(direction=COLUMN, padding=20))# Criação da janelaself.main_window = toga.MainWindow(title=self.formal_name)self.main_window.content = boxself.main_window.show()# Inicializando o aplicativodef main():return MeuApp('Meu App', 'org.exemplo.meuapp')if __name__ == '__main__':main().main_loop()
4. PasswordInput
password_input = toga.PasswordInput(placeholder='Senha')
import togafrom toga.style import Packfrom toga.style.pack import COLUMNclass MeuApp(toga.App):def startup(self):# Criação do widget PasswordInputpassword_input = toga.PasswordInput(placeholder='Senha', style=Pack(padding=10))# Adicionando uma caixa de texto para mostrar o valor da senhadef on_button_click(widget):# Exibe o valor da senha no terminal (em um aplicativo real, você faria algo mais seguro)print(f"Senha inserida: {password_input.value}")# Criação de um botão para capturar a senhabutton = toga.Button('Mostrar Senha', on_press=on_button_click, style=Pack(padding=10))# Layout do aplicativobox = toga.Box(children=[password_input, button], style=Pack(direction=COLUMN, padding=20))# Criação da janela principalself.main_window = toga.MainWindow(title=self.formal_name)self.main_window.content = boxself.main_window.show()# Inicializando o aplicativodef main():return MeuApp('Meu App', 'org.exemplo.meuapp')if __name__ == '__main__':main().main_loop()
5. Box
box = toga.Box(children=[widget1, widget2])
- O aplicativo cria uma janela com três widgets:
- Um campo de entrada de texto onde o usuário pode digitar.
- Um botão para "Mostrar Texto".
- Um rótulo que inicialmente exibe uma mensagem padrão.
- Quando o botão é pressionado, o texto do campo de entrada (TextInput) é capturado e mostrado no Label.
6. ImageView
image_view = toga.ImageView(image_path='imagem.jpg')
Exemplo prático:
import toga
from toga.style import Pack
from toga.style.pack import CENTER
class MeuApp(toga.App):
def startup(self):
# Defina o caminho da imagem
image_path = 'resources/canalqb.png' # Substitua pelo caminho correto da sua imagem
# Criação do objeto Image
image = toga.Image(image_path) # Aqui, criamos um objeto toga.Image
# Criação do widget ImageView
image_view = toga.ImageView(image=image, style=Pack(width=300, height=300, padding=10))
# Layout com a imagem centralizada
box = toga.Box(children=[image_view], style=Pack(direction='column', alignment=CENTER, padding=20))
# Criação da janela principal
self.main_window = toga.MainWindow(title=self.formal_name)
self.main_window.content = box
self.main_window.show()
# Inicializando o aplicativo
def main():
return MeuApp('Meu App', 'org.exemplo.meuapp')
if __name__ == '__main__':
main().main_loop()
7. Slider
slider = toga.Slider(min=0, max=100, value=50)
import togafrom toga.style import Packfrom toga.style.pack import CENTERclass MeuApp(toga.App):def startup(self):# Criar um label para mostrar o valor do sliderself.label = toga.Label("Valor do Slider: 50", style=Pack(padding=10, font_size=18))# Função para atualizar o label com o valor do sliderdef slider_changed(widget):self.label.text = f"Valor do Slider: {int(widget.value)}"# Criar o slider (de 0 a 100, com valor inicial 50)slider = toga.Slider(min=0, max=100, value=50, on_change=slider_changed, style=Pack(padding=10))# Criar um box para organizar os widgetsbox = toga.Box(children=[self.label, slider], style=Pack(direction='column', alignment=CENTER, padding=20))# Criar a janela principalself.main_window = toga.MainWindow(title=self.formal_name)self.main_window.content = boxself.main_window.show()# Inicializando o aplicativodef main():return MeuApp('Meu App', 'org.exemplo.meuapp')if __name__ == '__main__':main().main_loop()
8. Switch
switch = toga.Switch(label='Ativar')
import togafrom toga.style import Packfrom toga.style.pack import CENTERclass MeuApp(toga.App):def startup(self):# Criar um label para exibir o estado do switchself.label = toga.Label("Estado: Desativado", style=Pack(padding=10, font_size=18))# Função que será chamada quando o switch mudar de estadodef switch_changed(widget):if widget.value:self.label.text = "Estado: Ativado"else:self.label.text = "Estado: Desativado"# Criar o switch, passando o parâmetro 'text' necessárioswitch = toga.Switch(text="Ativar", on_change=switch_changed, style=Pack(padding=10))# Layout com os widgetsbox = toga.Box(children=[self.label, switch], style=Pack(direction='column', alignment=CENTER, padding=20))# Criar a janela principalself.main_window = toga.MainWindow(title=self.formal_name)self.main_window.content = boxself.main_window.show()# Inicializando o aplicativodef main():return MeuApp('Meu App', 'org.exemplo.meuapp')if __name__ == '__main__':main().main_loop()
9. ProgressBar
progress_bar = toga.ProgressBar(max=100)
10. Select
self.selection = toga.Selection(items=["title", "message", "sound"], on_change=self.func1 )
Exemplo prático:
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning, message=".*on_select.*")
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW
class HelloWorld(toga.App):
def startup(self):
# Use 'on_change' instead of 'on_select'
self.selection = toga.Selection(style=Pack(font_size=30), items=["title", "message", "sound"], on_change=self.func1 )
main_box = toga.Box(style=Pack(direction=COLUMN))
main_box.add(self.selection)
self.main_window = toga.MainWindow(title=self.formal_name)
self.main_window.content = main_box
def func1(self, widget):
print(self.selection.value)
return
def main():
return HelloWorld()
11. MultilineTextInput
multiline_text_input = toga.MultilineTextInput()
12. Table
table = toga.Table(headers=['Coluna 1', 'Coluna 2'], data=[('Item 1', 'Valor 1'), ('Item 2', 'Valor 2')])
13. DatePicker
date_picker = toga.DatePicker()
14. TimePicker
time_picker = toga.TimePicker()
15. WebView
webview = toga.WebView(url='https://www.exemplo.com')
16. NavigationView
nav_view = toga.NavigationView()
17. Dialog
toga.MainWindow().info_dialog('Título', 'Mensagem')
18. Tree
tree = toga.Tree(root=some_tree_data)
19. ScrollContainer
scroll_container = toga.ScrollContainer(content=some_widget)
20. Action
action = toga.Action('Ação', handler=callback)
21. Font
font = toga.Font(family='Arial', size=12)
22. TextView
text_view = toga.TextView(text='Texto com formatação')
23. Menu
menu = toga.Menu(items=[toga.MenuItem('Abrir', handler=abrir), toga.MenuItem('Sair', handler=sair)])
24. Window
window = toga.MainWindow('Minha Aplicação')window.content = box # Onde box é um layout que contém os widgetswindow.show()
25. Popup
popup = toga.Popup('Informação', message='Aqui está a mensagem.')popup.show()
26. MenuBar
menubar = toga.MenuBar(items=[toga.Menu('Arquivo', items=[toga.MenuItem('Abrir', handler=abrir)])])window = toga.MainWindow()window.menu = menubar
27. Spacer
spacer = toga.Spacer()
28. Color
color = toga.Color('#FF5733') # Cor em hexadecimalbutton.style.background_color = color
29. CheckBox
checkbox = toga.Switch(label='Aceito os termos', on_toggle=toggle_handler)
30. FontIcon
icon = toga.FontIcon('fa-check')button = toga.Button('Concluir', icon=icon)
31. ActionGroup
action_group = toga.ActionGroup('Grupo de Ações', actions=[action1, action2])
32. FontFamily
font_family = toga.FontFamily('Roboto')label.style.font = font_family
33. ContextMenu
def on_right_click(widget):context_menu = toga.Menu(items=[toga.MenuItem('Opção 1', handler=opcao1)])context_menu.show()widget.on_right_click = on_right_click
Nenhum comentário
Comente só assim vamos crescer juntos!
Observação: somente um membro deste blog pode postar um comentário.