Tkinter Python program: decimal to roman conversion

0

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()
    
asked by anonymous 05.04.2018 / 18:13

0 answers