Iniciar
Olá, no artigo anterior, mostrei como fazer um jogo em python , e agora vamos ver como fazer uma calculadora simples em python tkinter .
Crie uma janela de 485 por 550. As dimensões não são importantes, gostei delas. Também indicamos que a janela não será alterada.
from tkinter import * class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.build() def build(self): pass def logicalc(self, operation): pass def update(): pass if __name__ == '__main__': root = Tk() root["bg"] = "#000" root.geometry("485x550+200+200") root.title("") root.resizable(False, False) app = Main(root) app.pack() root.mainloop()
Ótimo, siga em frente.
Faça botões
No método de compilação , crie a seguinte lista:
btns = [ "C", "DEL", "*", "=", "1", "2", "3", "/", "4", "5", "6", "+", "7", "8", "9", "-", "+/-", "0", "%", "X^2" ]
Ele é responsável por todos os botões que aparecem em nossa janela.
Criamos a lista, agora passamos pelo loop e exibimos esses botões. Para fazer isso, no mesmo método, escreva o seguinte:
x = 10 y = 140 for bt in btns: com = lambda x=bt: self.logicalc(x) Button(text=bt, bg="#FFF", font=("Times New Roman", 15), command=com).place(x=x, y=y, width=115, height=79) x += 117 if x > 400: x = 10 y += 81
Ótimo, temos botões. Adicione a inscrição com a saída. Quero que o texto fique à esquerda, portanto, os atributos de alinhamento de texto não precisam ser escritos.
self.formula = "0" self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"), bg="#000", foreground="#FFF") self.lbl.place(x=11, y=50)
Lógica de escrita
def logicalc(self, operation): if operation == "C": self.formula = "" elif operation == "DEL": self.formula = self.formula[0:-1] elif operation == "X^2": self.formula = str((eval(self.formula))**2) elif operation == "=": self.formula = str(eval(self.formula)) else: if self.formula == "0": self.formula = "" self.formula += operation self.update() def update(self): if self.formula == "": self.formula = "0" self.lbl.configure(text=self.formula)
Portanto, como não temos entrada de teclado, podemos fazê-lo, basta verificar as promoções. botões (C, DEL, =) e, em outros casos, basta adicionar isso à fórmula.
Esta calculadora tem muitas falhas, mas não tentamos torná-la ideal.
Peço desculpas pelos erros no artigo. Escreva, eu vou corrigir.
Código completo da minha versão da calculadora:
from tkinter import * class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.build() def build(self): self.formula = "0" self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"), bg="#000", foreground="#FFF") self.lbl.place(x=11, y=50) btns = [ "C", "DEL", "*", "=", "1", "2", "3", "/", "4", "5", "6", "+", "7", "8", "9", "-", "(", "0", ")", "X^2" ] x = 10 y = 140 for bt in btns: com = lambda x=bt: self.logicalc(x) Button(text=bt, bg="#FFF", font=("Times New Roman", 15), command=com).place(x=x, y=y, width=115, height=79) x += 117 if x > 400: x = 10 y += 81 def logicalc(self, operation): if operation == "C": self.formula = "" elif operation == "DEL": self.formula = self.formula[0:-1] elif operation == "X^2": self.formula = str((eval(self.formula))**2) elif operation == "=": self.formula = str(eval(self.formula)) else: if self.formula == "0": self.formula = "" self.formula += operation self.update() def update(self): if self.formula == "": self.formula = "0" self.lbl.configure(text=self.formula) if __name__ == '__main__': root = Tk() root["bg"] = "#000" root.geometry("485x550+200+200") root.title("") root.resizable(False, False) app = Main(root) app.pack() root.mainloop()