The program does not work with tkinter. I can run the program only in python. You are always asking for the definition of self. The Roman soldier does not appear because the file is not present (no problem). Someone can help me to run the program in the tkinter window.
from tkinter import *
class Conversor:
def __init__(self,root):
self.texto1=Label(root,text='DECIMAL',font=('Verdana 8 bold'))
self.texto1.place(x=30,y=20)
self.texto2=Label(root,text='ROMANO',font=('Verdana 8 bold'))
self.texto2.place(x=300,y=20)
self.ed=Entry(root)
self.ed.place(x=30,y=50)
self.ed.focus_force()
self.lb=Label(root,text='RESULTADO',font=('Verdana 8 bold'),fg='Red')
self.lb.place(x=280,y=100)
self.bt=Button(root, width=10, text='Calcular',font=('Verdana 8 bold'),command=self.int_to_roman)
self.bt.place(x=30,y=120)
self.msg=Label(root,width=18,bg='yellow', fg='white')
self.msg.place(x=260,y=120)
def int_to_roman(self):
n1=self.ed.get()
n1=int(n1)
if not isinstance(n1, type(1)):
raise ValueError ("Expected integer, got {}".format(type(n1)))
if not 0 < n1 < 4000:
raise ValueError ("Argument must be between 1 and 3999")
ints = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1) #Tupla com os números inteiros
nums = ('M', 'CM', 'D', 'CD','C', 'XC','L','XL','X','IX','V','IV','I') #Tupla com os números romanos
result = [] #Lista com o resultado da conversão
for i in range(len(ints)): #Loop para apurar o valor do número romano
count = int(n1/ ints[i]) #A parte inteira da divisão é colacada em count
result.append(nums[i] * count) #A letra do indice multiplicada pelo inteiro é adicionada á lista
n1-= ints[i] * count #O produto do indice da tupla dos inteiros pelo contador é subtraido
return ''.join(result)
# do valor do input. Os valores são juntos(joint) e retornados
self.msg['text']=format(''.join(result))
root=Tk()
Conversor(root)
root.title('Conversor para Números Romanos')
root.geometry('400x200')
soldier=PhotoImage(file='c:/Users/Benigno/Pictures/Roman_soldier.gif')
soldier=soldier.subsample(4,4)
label=Label(root,image=soldier)
label.pack()
root.mainloop()