from Tkinter import *
f = Frame()
sf1 = Frame(f)
sf2 = Frame(f)
l1 = Label(sf1)
l1["text"] = "Label1"
l2 = Label(sf2)
l2["text"] = "Label2"
e1 = Entry(sf1)
e2 = Entry(sf2)
for ctrl in [l1, l2, e1, e2]:
ctrl["font"] = "Arial 20"
l1.pack(side = "left")
e1.pack()
l2.pack(side = "left")
e2.pack()
sf1.pack()
sf2.pack()
f.pack()
mainloop()
Arquivo romano.py:
romanos = {
'unidades': [ "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" ],
'dezenas': [ "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" ],
'centenas': [ "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" ],
'milhares': [ "", "M", "MM", "MMM" ]
}
nomes = {
1000: 'milhares',
100: 'centenas',
10: 'dezenas',
1: 'unidades'
}
def romano(n):
res = ""
for d in [1000,100,10,1]:
res = res + romanos[nomes[d]][n / d]
n = n % d
return res
def arabico(r):
n = 0
j = 0
for num in [1000, 100, 10, 1]:
nome = nomes[num]
for i in range(-1, -len(romanos[nome])-1, -1):
parte = romanos[nome][i]
if r.find(parte, j, j+len(parte)) != -1:
n = n + num * (len(romanos[nome]) + i)
j = j + len(parte)
return n
for i in range(1, 4000):
assert(i == arabico(romano(i)))
Arquivo grid.py:
from Tkinter import *
from romano import *
f = Frame()
titulo = Label(f)
titulo["text"] = "Conversor"
titulo.pack()
sf = Frame(f)
l1 = Label(sf)
l1["text"] = "Arabico"
l2 = Label(sf)
l2["text"] = "Romano"
e1 = Entry(sf)
e2 = Entry(sf)
b1 = Button(sf)
b2 = Button(sf)
b1["text"] = "->"
b2["text"] = "<-"
for ctrl in [l1, l2, e1, e2, b1, b2, titulo]:
ctrl["font"] = "Arial 20"
l1.grid(column = 0, row = 0)
e1.grid(column = 1, row = 0)
l2.grid(column = 0, row = 1)
e2.grid(column = 1, row = 1)
b1.grid(column = 2, row = 0)
b2.grid(column = 2, row = 1)
sf.pack()
f.pack()
var_e1 = IntVar()
var_e1.set(1)
e1["textvariable"] = var_e1
var_e2 = StringVar()
e2["textvariable"] = var_e2
def cmd_b1():
n = var_e1.get()
r = romano(n)
var_e2.set(r)
b1["command"] = cmd_b1
def cmd_b2():
var_e1.set(arabico(var_e2.get()))
b2["command"] = cmd_b2
mainloop()