Em interface gráfica do usuário (GUI), uma interface de documentos múltiplos, ou MDI, acrônimo para Multiple Document Interface é um método de organização de aplicações gráficas em janelas que residem em uma única janela, a janela principal da aplicação. A única exceção são possíveis janelas modais da aplicação.
Com múltiplas interfaces de documentos, uma única barra de menu e / ou barra de ferramentas é compartilhado entre todas as janelas filho, reduzindo a desordem e uma utilização mais eficiente do espaço na tela. As janelas filho de um aplicativo pode ser ocultada / mostrada / minimizada / maximizada como um todo. Os autores de aplicações multi-plataforma podem fornecer a seus usuários um comportamento consistente da aplicação entre plataformas.
WxPython
É um kit de ferramentas GUI para a linguagem de programação Python. Ele permite que os programadores Python desenvolvam programas com uma interface gráfica do usuário altamente funcional e robusta, simples e fácil. Ele é implementado como um módulo de extensão Python (código nativo) que envolve a biblioteca wxWidgets de plataforma cruzada, e é escrito em C++.
Download: http://www.wxpython.org/index.php
WxPython – Linux Ubuntu Bug (WxWidgets apps don’t have menus)
O código Python é multi-plataforma, porem a coleção de Widgets WxPython possui um erro identificado na plataforma Linux Ubuntu e não exibe os menus, até a data deste post a instalação da versão mais recente do WxPython não corrigiu o problema, portanto escrevemos e testamos este código na plataforma Windows.
Informações sobre o erro: https://bugs.launchpad.net/ubuntu/+source/wxwidgets2.8/+bug/662077
Exemplo:
Neste exemplo criamos um formulário MDI básico e um menu.
Python
#!/usr/bin/env python # -*- coding: latin-1 -*- # Desenvolvimento Aberto # MdiForms.py # importa modulos import wx # Declara Classe class MDIFormulario(wx.MDIParentFrame): # Declara Contrutor def __init__(self): # Cria Formulario Pai wx.MDIParentFrame.__init__(self, None, -1, "Python - Formulario - MDI ",size=(wx.GetDisplaySize())) # Cria Menu menu = wx.Menu() menu.Append(5000, "&Novo") menu.Append(5001, "&Sair") # Cria Barra de menus menubarra = wx.MenuBar() menubarra.Append(menu, "&Formulario") self.SetMenuBar(menubarra) # Declara Eventos dos menus self.Bind(wx.EVT_MENU, self.OnNovoFormulario, id=5000) self.Bind(wx.EVT_MENU, self.OnSair, id=5001) # Cria evento de saida def OnSair(self, evt): self.Close(True) # Cria Janela def OnNovoFormulario(self, evt): # Cria Formulario Filho FormularioFilho = wx.MDIChildFrame(self, -1, "Formulario Filho", size=(400, 200)) # Cria componentes do formulario self.texto = wx.StaticText(FormularioFilho, label="Digite seu nome: ", pos=(20, 30)) self.campo = wx.TextCtrl(FormularioFilho, size=(300, -1), pos=(20, 60)) self.botao = wx.Button(FormularioFilho, label="Ok", pos=(20, 90)) # Exibe formulario FormularioFilho.Show(True) # Cria aplicação Wx app = wx.PySimpleApp() # Cria formulario formulario = MDIFormulario() formulario.Show() # Loop do tcl app.MainLoop()
Oi,
você indicaria alguma ferramenta gráfica para trabalhar no Windows ?
Olá Leandro,
O Wx Python funciona no Windows e roda em x64, eu particularmente gosto dele pq ele é feito em C++ e tem uma semelhança com os componentes do C++ incluindo as nomenclaturas dos objetos por exemplo um componente “StaticText” em C++ é um StaticText em Python, além de varias outras semelhanças, é muito parecido com o C++ MFC da Microsoft (C++ nativo), roda muito bem em Linux e Mac Os componentes são fáceis de utilizar, muito leves e criam interfaces gráficas muito bonitas em qualquer plataforma.
Uma boa pedida é já que você vai usar Windows utilizar a IDE Visual Studio com os plug-ins para Python que você estará muito bem de ferramentas, suporta também os frameworks web mais utilizados para Python.
Temos um post de como usar o Visual Studio em com o Python
Espero ter ajudado, qualquer coisa estou a disposição.
Abraços.