matheusfelipeog/calculadora-tk

Novas operações matemáticas na calculadora

matheusfelipeog opened this issue · 7 comments

Olá dev.

Como descrito no README, algumas issues serão para compartilhar ideias de novas funcionalidades ou bugs para serem arrumados por outros iniciantes.

Então para começar, que tal adicionar algumas novas operações matemática para a Calculadora Tk?

Comece incrementando à calculadora essas novas operações:

  • Raiz Quadrada de determinado número;
  • Exponenciação de determinado número.

Implemente essas novas operações na calculadora na parte inferior, para manter o layout organizado. Posteriormente será ajustado conforme adicionado novas funcionalidades.

Você quer alguma operação especifica que está sentindo falta na calculadora ? Crie uma issue solicitando a nova operação 😁👍

Olá @matheusfelipeog, tenho interesse em implementar essa issue!! Ainda não tenho certeza em como fazer, mas tenho uma ideia. Muito legal esse projeto que está realizando, parabéns 🎉 🎉

Olá, @aguiarcandre, muito obrigado 😁

Estou ansioso para ver sua implementação, fique a vontade para mandar o Pull Request quando julgar finalizado.

Caso tenha dúvidas em como criar as funcionalidades, deixei alguns links no README com tutoriais interessantes que podem ajuda-lo.

Dica: Adicione 4 novos botões na parte inferior da calculadora: 2 para as funcionalidades que você irá implementar e mais 2 para futuras implementações (pode deixar 2 botões vazios mesmo), assim não irá deixar o layout quebrado faltando dois botões e já facilita para outros devs ;)

Aguardo seu PR 🎉

Ei @matheusfelipeog, muito obrigado pela ajuda! Fiz o fork do projeto para começar a criar as novas funcionalidades, porém, notei ao rodar o programa que o meu layout está bem diferente do exemplo em demo.gif.

Captura de Tela 2020-01-24 às 08 56 35

Não sei se foi algum bug intencional que você deixou ou se é algo com minha configuração. Quando eu tento mudar o fg ou o width dentro de style.py, a alteração é realizada na calculadora, mas quando tento mudar o bg de algum dos botões nada acontece. No clique o fg muda, já o bg se mantém da mesma cor. Fiz a simulação das cores hex que estão em style.py e aparentemente está tudo batendo com o seu exemplo.

Em calculadora.py, se eu mudo as dimensões do master e o bg da área de input ou dos botões, a mudança aparece na calculadora. Fiz alguns cálculos de teste e a lógica parece estar funcionando.

Estou rodando com:

  • macOS Catalina 10.15.2
  • Python 3.7.4
  • Tkinter 8.6

@aguiarcandre, obrigado por apontar essa divergência do tkinter entre OS diferente.

Esse não foi algo proposital, mas é estranho o tkinter ter esse comportamento.🤔 Como você pode ver aqui e aqui o tkinter renderiza todos os elementos com base nos nativos do OS utilizado.

A versão do Python e Tkinter que você utiliza estão iguais a do meu ambiente, somente o OS é diferente mesmo.
Talvez seja alguma característica do macOS referente a identificação dessas cores, já que a estrutura como um todo da calculadora não foi prejudicada.

Opções

  1. Caso você não tenha conseguido encontrar o motivo de tal efeito, crie uma nova classe no arquivo style.py. Para isso você só precisa copiar a classe já existente, Dark, e alterar seu nome ( para DarkForMacOS talvez, vai de sua escolha ) e as demais configurações de modo que concerte esse probleminha que você encontrou. E nessa nova classe você coloca uma docstring informando que ela foi criada para que corrigisse esse bug em ambientes de macOS.

Por exemplo:

class DarkForMacOS(object):
    """Classe criada para ambientes macOS para corrigir bug de estilo."""
    (...)
  1. Teria a opção de realizar a implementação da operações matemáticas nas cegas como mostrado no seu screenshot, assim garantindo o estilo em outros OS, mas prefiro a primeira opção e você ? 😁

Se mesmo assim esse tipo de abordagem não estiver funcionando, me informe novamente para discutirmos o que faremos com esse suposto bug.

Ei @matheusfelipeog! Andei pesquisando e vi que realmente existem algumas dificuldades na implementação do tkinter para macOS, parece que não é possível mudar o background dos botões, link1, link2. Vi algumas sugestões, como usar o módulo tkinter.ttk, mas mesmo assim não é possível modificar o background.

Pensei em criar uma classe "default" para macOS, conforme você sugeriu no último comentário, mas essa classe não seguiria o estilo de cores proposto, pois teria de usar o padrão do OS. Acha interessante colocar uma lógica para identificar o OS e atribuir automaticamente o estilo do macOS caso seja necessário? Ou isso fica para depois?

Assim, com a nova classe criada, eu faria as implementações da issue. Posso seguir assim?

@aguiarcandre, com certeza seria interessante colocar um identificador de OS para usar determinado estilo. Caso tenha interesse em criar tal lógica fique a vontade para implementar.

Referente a criação de uma classe padrão para os macOS, pode seguir como conversamos sim

Implementação das novas operações propostas realizada, issue fechada. 🎉