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.