В общем, захотелось мне увеличить размер текста на кнопках и поле ввода. Так вот, когда я задал размер шрифта для поля ввода, у меня все кнопки стали находится друг от друга и еще длина самой программы стала больше чем была первоначально. Что по проблемам:
1.Почему то, когда я открываю приложение в полный экран, все кнопки и тд. остаются неизменными и просто перемещаются в левый верхний угол.
2.Неправильно считает некоторые знаки.
3.Как сделать так, чтобы одна часть интерфейса была прозрачной, а другая нет.
4.Как менять формы у кнопок? То есть, вместо квадрата овал, вместо квадрата круг и тд. И чтобы все сразу, а не по отдельности.
Вот, если что код:
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import math
import sys
root = Tk()
root.title("K.R.A.T.C.H.")
bttn_list = [
"π", "7", "8", "9", "+",
"n!", "4", "5", "6", "-",
"√2", "1", "2", "3", "*",
"xⁿ", "±", "0", ".",
"/", "Exit", "sin", "cos",
"C", "=","(",")", ]
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 > 4:
c = 0
r += 6
calc_entry = Entry(root, width = 53)
calc_entry.grid(row=0, column=0, columnspan=5, ipady=100)
#логика калькулятора
def calc(key):
global memory
if key == "=":
#исключение написания слов
str1 = "-+0123456789.*/)("
if calc_entry.get()[0] not in str1:
calc_entry.insert(END, "Первый символ - это не число!")
messagebox.showerror("Ошибка!", "Вы не ввели число!")
#исчисления
try:
result = eval(calc_entry.get())
calc_entry.insert(END, "=" + str(result))
except:
calc_entry.insert(END, "Ошибка!")
messagebox.showerror("Ошибка!", "Проверьте правильность данных")
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 == "√2":
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()