0
0 комментариев

Добрый день! Пишу калькулятор на Python 3.7.4 . Реализовал все функции с помощью lambda, но могу изменить только ширину кнопок, хотел узнать можно ли изменить и высоту? Или придется описывать каждую кнопку в отдельности?

[apcode language=\»python\»]

from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import math
import sys
 root = Tk()
root.title(\"Calculator\")
#root.geometry(\"300x250\")
 bttn_list = [ #состав кнопок
\"C\", \"±\", \"π\", \"/\",
\"7\", \"8\", \"9\", \"*\",
\"4\", \"5\", \"6\", \"-\",
\"1\", \"2\", \"3\",  \"+\",
\"0\", \".\", \"=\",  \"√\",
\"n!\", \"cos\", \"sin\",\"xⁿ\",
\"(\",\")\",\"Exit\", ] 
 r = 1 #задание размеров и внешнего вида
c = 0
for i in bttn_list:
    rel = \"\"
    cmd=lambda x=i: calc(x)
    ttk.Button(root, text=i, command = cmd, width = 9).grid(row=r, column = c)
    c += 1
    if c > 3:
        c = 0
        r += 1
 calc_entry = Entry(root, width = 40) #Задание размеров поля ENTER
calc_entry.grid(row=0, column=0, columnspan=5)
 def calc(key):     #функции кнопок
    global memory 
    if key == \"=\":
        str1 = \"-+0123456789.*/)(\" 
        if calc_entry.get()[0] not in str1:
            calc_entry.insert(END, \"First symbol is not number!\")
            messagebox.showerror(\"Error!\", \"You did not enter the number!\")
        try:                                                #исчисления
            result = eval(calc_entry.get())
            calc_entry.insert(END, \"=\" + str(result))
        except:
            calc_entry.insert(END, \"Error!\")
            messagebox.showerror(\"Error!\", \"Check the correctness of data\")
    elif key == \"C\":
        calc_entry.delete(0, END)
             elif key == \"±\":
        if \"=\" in calc_entry.get():
            calc_entry.delete(0, END)
        try:
            if calc_entry.get()[0] == \"-\":
                calc_entry.delete(0)
            else:
                calc_entry.insert(0, \"-\")
        except IndexError:
            pass
    elif key == \"π\":
            calc_entry.insert(END, math.pi)
    elif key == \"Exit\":
            root.after(1,root.destroy)
            sys.exit
    elif key == \"xⁿ\":
            calc_entry.insert(END, \"**\")
    elif key == \"sin\":
            calc_entry.insert(END, \"=\" + str(math.sin(int(calc_entry.get()))))
    elif key == \"cos\":
            calc_entry.insert(END, \"=\" + str(math.cos(int(calc_entry.get()))))
    elif key == \"(\":
            calc_entry.insert(END, \"(\")
    elif key == \")\":
            calc_entry.insert(END, \")\")
    elif key == \"n!\":
            calc_entry.insert(END, \"=\" + str(math.factorial(int(calc_entry.get()))))
    elif key == \"√\":
            calc_entry.insert(END, \"=\" + str(math.sqrt(int(calc_entry.get()))))
    else:
            if \"=\" in calc_entry.get():
                calc_entry.delete(0, END)
            calc_entry.insert(END, key)
root.mainloop()

[/apcode]

Отменить выбор ответа
Добавить комментарий