Gerando um código de barras postal(EUA)

Versão em inglês.

=Básico= Esse script vai gerar um código de barra postal para o código postal que você fornecer (Serviço de Postágem dos Estados Unidos - USPS). Ele usa o Tkinter para o requisitar um valor. Você pode fornecer números e incluir hifens se desejar, já que qualquer caractere não numérico será ignorado.

O código de barra é um conjunto de linhas criadas de acordo com as especificações do USPS. Esse script criará o código na vertical, ou seja, deixando as linhas na horizontal, dispostas logo no início da página, na posição X = 130 e Y = 130 (em pontos) -- veja as linhas com os comentários Início do X e Início do Y.

Para realocar a posição do código de barras, transforme o código em um grupo, assim você poderá move-lo para qualquer lugar que desejar (você pode usar a janela de propriedades também).

=postnet2.py (nova versão)=

A nova versão do script utiliza a chamada 'valueDialog' em vez do Tkinter (e toda sua complexidade).

Se você comparar os dois scripts, verá que esse é muito mais simples. Essa única linha substitui todo o código Tkinter: S = scribus.valueDialog('Postnet Barcode','Enter your Zip or Zip+4') A última atualização adicionou o "caractere de correção" de acordo com as normas da USPS.


 * 1) !/usr/bin/env python
 * 2) Arquivo: postnet2.py
 * 3) Criado originalmente 2006.03.06 - Gregory Pittman
 * 4) Atualização 2006.03.07
 * 5) Adiciona o código de erro:
 * 6) A soma de todos os dígitos
 * 7) devem ser divisíveis por 10.

import scribus

postcode = ['llsss','sssll','sslsl','sslls','slssl','slsls','sllss','lsssl','lssls','lslss'] a = 1.44     #line width b="Black"    #line color relx=47     #Start X rely=323      #Start Y correctnum = 0 if scribus.haveDoc: S = scribus.valueDialog('Postnet Barcode','Enter your Zip or Zip+4') scribus.setRedraw(1) scribus.setUnit(0) d = scribus.createLine(relx,rely,relx+9,rely,) #linha longa - Começando linha circundante scribus.setLineWidth(a, d)   scribus.setLineColor(b, d)    scribus.setFillColor(b, d)    rely = rely + 3.4 for x in S[0:]: if x.isdigit: xnum = int(x) correctnum += xnum     # Fazendo a soma de todos os dígitos code = postcode[xnum] for y in code[0:]: if y == 'l': d = scribus.createLine(relx,rely,relx+9,rely,) #linha longa scribus.setLineWidth(a, d)                   scribus.setLineColor(b, d)                    scribus.setFillColor(b, d)                    rely = rely + 3.4 elif y == 's': d = scribus.createLine(relx,rely,relx+3.6,rely,) #linha curta scribus.setLineWidth(a, d)                   scribus.setLineColor(b, d)                    scribus.setFillColor(b, d)                    rely = rely + 3.4 correctstr = str(correctnum) # Inicio do código de erro correctdig = int(correctstr[-1]) if correctdig != 0: correctdig = 10 - correctdig code = postcode[correctdig] for y in code[0:]: if y == 'l': d = scribus.createLine(relx,rely,relx+9,rely,) #linha longa scribus.setLineWidth(a, d)           scribus.setLineColor(b, d)            scribus.setFillColor(b, d)            rely = rely + 3.4 elif y == 's': d = scribus.createLine(relx,rely,relx+3.6,rely,) #linha curta scribus.setLineWidth(a, d)           scribus.setLineColor(b, d)            scribus.setFillColor(b, d)            rely = rely + 3.4 d = scribus.createLine(relx,rely,relx+9,rely,) #linha longa - Terminando linha circundante scribus.setLineWidth(a, d)   scribus.setLineColor(b, d)    scribus.setFillColor(b, d)    scribus.redrawAll

=postnet.py (versão original)=
 * 1) !/usr/bin/env python


 * 1) Arquivo: postnet.py
 * 2) criado originalmente 2006.02.26 - Gregory Pittman

import scribus import Tkinter

class ImageDialog(Tkinter.Toplevel): def __init__(self, parent): Tkinter.Toplevel.__init__(self, parent, bg="#bbbbff")

Tkinter.Label(self, text='Forneça o Código Postal e clique no OK',bg="#bbbbff").grid(row=0,columnspan=6)

self.e = Tkinter.Entry(self) self.e.grid(row=1,columnspan=6) b = Tkinter.Button(self, text='OK', bg="#55ff88", command=self.ok) b.grid(row=2,columnspan=6) self.protocol("WM_DELETE_WINDOW", self.quit)

def ok(self): S = self.e.get m = Tkinter.Message(root, text=self.e.get+'\nClose this\n window') m.grid(row=0, columnspan=4) postcode = ['llsss','sssll','sslsl','sslls','slssl','slsls','sllss','lsssl','lssls','lslss'] a = 1.44     #largura da linha b="Black"    #cor da linha relx=130     #Início do X        rely=130      #Início do Y        correctnum = 0 if scribus.haveDoc: scribus.setRedraw(1) scribus.setUnit(0) d = scribus.createLine(relx,rely,relx+9,rely,) #Linha longa scribus.setLineWidth(a, d)           scribus.setLineColor(b, d)            scribus.setFillColor(b, d)            rely = rely + 3.4 for x in S[0:]: if x.isdigit: xnum = int(x) correctnum += xnum     # Fazendo a soma de todos os dígitos code = postcode[xnum] for y in code[0:]: if y == 'l': d = scribus.createLine(relx,rely,relx+9,rely,) #Linha longa scribus.setLineWidth(a, d)                       scribus.setLineColor(b, d)                        scribus.setFillColor(b, d)                        rely = rely + 3.4 elif y == 's': d = scribus.createLine(relx,rely,relx+3.6,rely,) #Linha curta scribus.setLineWidth(a, d)                       scribus.setLineColor(b, d)                        scribus.setFillColor(b, d)                        rely = rely + 3.4 correctstr = str(correctnum) # Início do código de erro correctdig = int(correctstr[-1]) if correctdig != 0: correctdig = 10 - correctdig code = postcode[correctdig] for y in code[0:]: if y == 'l': d = scribus.createLine(relx,rely,relx+9,rely,) #Linha longa scribus.setLineWidth(a, d)                   scribus.setLineColor(b, d)                    scribus.setFillColor(b, d)                    rely = rely + 3.4 elif y == 's': d = scribus.createLine(relx,rely,relx+3.6,rely,) #Linha curta scribus.setLineWidth(a, d)                   scribus.setLineColor(b, d)                    scribus.setFillColor(b, d)                    rely = rely + 3.4 d = scribus.createLine(relx,rely,relx+9,rely,) #Linha longa scribus.setLineWidth(a, d)           scribus.setLineColor(b, d)            scribus.setFillColor(b, d)            redrawAll self.Tkinter.Toplevel.destroy

root = Tkinter.Tk root.update z = ImageDialog(root) root.wait_window(z)