• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

wpy

[Duvida]Tkinter texto na tela

10 mensagens neste tópico

Estou com uma duvida,pq não consigo enviar o texto para a tela

# -*- coding: UTF-8 -*-


from Tkinter import *
from math import *
import sys

class Calculadora:
    def __init__(self, toplevel):

        # Janela
        toplevel.title('Calculadora')
        toplevel.geometry("210x200")

        # Espaçamento
        self.frame1 = Frame(toplevel)
        self.frame1.pack()

        # Box 1
        self.frame2 = Frame(toplevel)
        self.frame2.pack()

        # Box 2
        self.frame3 = Frame(toplevel)
        self.frame3.pack()

        # Operações
        self.frame4 = Frame(toplevel, pady=12)
        self.frame4.pack()

        # Resultado
        self.frame5 = Frame(toplevel)
        self.frame5.pack()

        # Botões
        self.frame6 = Frame(toplevel, pady=12)
        self.frame6.pack()

        # Cor e tamanho das letras 
        Label(self.frame1,text='', fg='black',
        font=('Verdana','10'), height=1).pack()
        fonte1=('Verdana','10')

        # Botão somar
        somar=Button(self.frame4,font=fonte1, text='+',command=self.somar)
        somar.pack(side=LEFT)

        # Botão subtrair
        subtrair=Button(self.frame4,font=fonte1, text='-',command=self.subtrair)
        subtrair.pack(side=LEFT)

        # Botão multiplicar
        multiplicar=Button(self.frame4,font=fonte1, text='*',command=self.multiplicar)
        multiplicar.pack(side=LEFT)

        # Botão dividir
        dividir=Button(self.frame4,font=fonte1, text='/',command=self.dividir)
        dividir.pack(side=LEFT)

        # Botão raiz
        raiz=Button(self.frame4,font=fonte1, text='Sqrt',command=self.sqrt)
        raiz.pack(side=LEFT)

        # Botão Limpar
        limpar=Button(self.frame6, font=fonte1, text= 'Limpar', command=self.limpar)
        limpar.pack(side=LEFT)

        # Botão Sair
        sair=Button(self.frame6, font=fonte1, text= 'Sair', command=self.sair)
        sair.pack(side=LEFT)

        # Box 1 para entrada de número
        Label(self.frame2,text='Valor1 :', font=fonte1,width=8).pack(side=LEFT)
        self.valor1=Entry(self.frame2,width=10,font=fonte1)
        self.valor1.focus_force()
        self.valor1.pack(side=LEFT)

        # Box 2 para entrada de número
        Label(self.frame3,text='Valor2 :',font=fonte1,width=8).pack(side=LEFT)
        self.valor2=Entry(self.frame3,width=10,font=fonte1)
        self.valor2.pack(side=LEFT)

        # Resultado
        Label(self.frame5,text=' = ',font=fonte1,width=8).pack(side=LEFT)
        self.msg=Label(self.frame5,width=10,font=fonte1)
        self.msg.pack(side=LEFT)

    def somar(self):
        valor1 = self.valor1.get()
        valor2 = self.valor2.get()
        valor1 = float(valor1)
        valor2 = float(valor2)
        c = valor1 + valor2
        c = float(c)
        self.msg['text']= '%f' %(c)

    def subtrair(self):
        valor1 = self.valor1.get()
        valor2 = self.valor2.get()
        valor1 = float(valor1)
        valor2 = float(valor2)
        c = valor1 - valor2
        c = float(c)
        self.msg['text']= '%f' %(c)

    def multiplicar(self):
        valor1 = self.valor1.get()
        valor2 = self.valor2.get()
        valor1 = float(valor1)
        valor2 = float(valor2)
        c = valor1 * valor2
        c = float(c)
        self.msg['text']= '%f' %(c)

    def dividir(self):
        valor1 = self.valor1.get()
        valor2 = self.valor2.get()
        valor1 = float(valor1)
        valor2 = float(valor2)
        c = valor1 / valor2
        c = float(c)
        self.msg['text']= '%f' %(c)

    def sqrt(self):
        try:
            valor1 = self.valor1.get()
            valor1 = float(valor1)
            c = sqrt(valor1)
            c = float(c)
            self.msg['text']= '%f' %(c)
        except:
            valor2 = self.valor2.get()
            valor2 = float(valor2)
            c = sqrt(valor2)
            c = float(c)
            self.msg['text']= '%f' %(c)

    def limpar(self):
        pass

    def sair(self):
        app.destroy()

app=Tk()
Calculadora(app)
app.mainloop()

Alguém tem algum palpite? :biggrin:

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:P..ressucitando :rant_01:

wpy... Rodei aqui e não retornou nenhum erro..

Dica:

def limpar(self):
            self.msg['text'] = ""

Para melhora-lo deve se fazer alguns tratamentos de float() e int(), (ex: 1+1= 2.0000000), ..

Pq ñ executa ai?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

executa normal,só nao consegui enviar o texto par aa tela vou tentar agora

vlw

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epa... o que queres dizer com 'tela'?

Ecrã.

Mais vago que isso não se pode ser. Penso que onde quer que mostre o que quer que seja acabará sempre no ecra. Agora a questão que se coloca:

em que widget queres mostrar o texto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código funciona no meu PC mto bem! Agora, tenho 2 coisas a apontar:

Devias fazer um Exception Handling (thanks pcaldeira e djthyrax), pq se deixares uma das posições em branco, aparece na consola erro de não sei quantas e fazias aparecer apenas "Falta 1 Valor" com o Exception Handling.

O "limpar" n funciona!

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o texto encontrado aparece no console e não no GUI

No meu aparece na GUI!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora