Como instalar interface gráfica ttk no Python do Scribus

Visual Tcl splash

PAGE usa o Visual Tcl

A linguagem Python — usada como linguagem script do Scribus — tem uma interface gráfica default há muitos anos. É o módulo tkinter, que usa a engine gráfica Tk (toolkit) da linguagem Tcl. A instalação Windows do Scribus, muito bem empacotada, instala automaticamente tanto o Python quanto o Tcl/Tk. O Scribus 1.3.9 para Windows usa Python 2.5.4 e Tcl 8.4, enquanto a versão para Linux usa Python 2.6 e Tcl/Tk 8.5.

[Atualização em 2012-02-14: O Scribus 1.4 usa Python 2.7, que já tem ttk incluído].

Alguns dos problemas do uso desta interface gráfica é que ela é muito complicada de se programar, a GUI é difícil de se desenhar e os “widgets” — botões, campos de entrada, menus etc — são bastantes pobres para os dias atuais. Para facilitar o trabalho com GUIs, foi criado o módulo Tcl ttk (themed tool kit), default a partir de Tcl/Tk 8.5 e Python 2.7 e 3.1.

Tornando ainda mais fácil o desenho de GUI, um programador da HP, Don Rozenberg, turbinou o Visual Tcl com as novas widgets ttk e com um botão para geração e teste de códigos Python. Criou o PAGE, Python GUI Generator.

Embora o Scribus 1.3.9 tenha versões anteriores do Python e Tcl/Tk, é possível se instalar o ttk neste ambiente pelo pacote pyttk do Pyhton e Tile do Tcl.

Instalação do Tile no Tcl do Scribus

Baixei o Tile 0.8.2.zip — o pacote que deu origem ao ttk e ainda é mantido por compatibilidade ao Tcl 8.4 — e descompactei a pasta \tile0.8.2\ para a pasta c:\Arquivos de programas\Scribus 1.3.9\tcl\. Como uso o Python 2.6 para desenvolvimento, também descompactei para a pasta c:\Python26\tcl\. Na parte Tcl/Tk, é só. No Ubuntu 10.10, isto não é necessário, pois o Scribus instala o Tcl/Tk 8.5, que já tem Tile.

Instalação do pyttk no Python

Baixei o zip do pyttk e extraí a pasta pyttk-0.3.2 para c:\Arquivos de programas\Scribus 1.3.9\lib\site-packages\. Através do Scripter do Scribus, menu “Script > Executar script…”, rodei o script setup.py para registrar o ttk no Python. No Ubuntu 10.10, instalei com os comandos no terminal para baixar o pyttk, descompactá-lo, mudar para o diretório descompactado e instalar o módulo no Python:

wget http://pypi.python.org/packages/source/p/pyttk/pyttk-0.3.2.tar.gz
tar -vzxf ./pyttk-0.3.2.tar.gz
cd ./pyttk-0.3.2
sudo python setup.py install

O resultado da instalação, no terminal, foi este:

running install
running build
running build_py
creating build
creating build/lib.linux-i686-2.6
copying ttk.py -> build/lib.linux-i686-2.6
running install_lib
copying build/lib.linux-i686-2.6/ttk.py -> /usr/local/lib/python2.6/dist-packages
running install_egg_info
Removing /usr/local/lib/python2.6/dist-packages/pyttk-0.3.2.egg-info
Writing /usr/local/lib/python2.6/dist-packages/pyttk-0.3.2.egg-info

Instalação do PAGE

Só o Tile e o pyttk são necessários para se usar GUI no Scribus. Mas, para desenhar as GUI, baixei o PAGE e instalei-o na pasta c:\Python26\. Um ícone no desktop roda o arquivo BAT “c:\Python26\page\winpage.bat”, que modifiquei para “c:\Arquivos de programas\tcl\tclkit.exe c:\Python26\page\page.tcl %1” porque uso o tclkit em vez do Tcl.

Fiz dois pequenos patches no código Tcl gerador de Python, no arquivo c:\Python26\page\lib\python_ui.tcl, para usar caracteres UTF-8 (linha 224) e para o código aceitar o interpretador Python 2.5.4 (linha 230).

#-*- coding: utf-8 -*-

if version >= 0x020504F0 and version < 0x03000000 :
   py2 = True    # Python 2.6 or 2.7 from Tkinter import *
   import ttk

Assim, estou apto a desenvolver interfaces gráficas de complexidade média para a linguagem script do Scribus, como mostra a imagem abaixo.

About José Antonio Meira da Rocha

Jornalista, professor das áreas de Editoração e de Mídias Digitais na Universidade Federal de Santa Maria, campus cidade de Frederico Westphalen, Rio Grande do Sul, Brasil. Doutor em Design pelo Programa de Pós-Graduação em Design (PGDesign)/Universidade Federal do Rio Grande do Sul (UFRGS), Porto Alegre, Brasil, 2023. Mestre em Mídias pela UNISINOS, São Leopoldo, RS, Brasil, 2003. Especialista em Informática na Educação, Unisinos, 1976.