Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как в Tkinder увеличить размер текста в поле ввода и на кнопках + решить несколько проблем?

В общем, захотелось мне увеличить размер текста на кнопках и поле ввода. Так вот, когда я задал размер шрифта для поля ввода, у меня все кнопки стали находится друг от друга и еще длина самой программы стала больше чем была первоначально. Что по проблемам:
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()
Программы+1
Seck Man
  ·   · 289
Блогер в сети интернет   · 22 окт 2021
1.Почему то, когда я открываю приложение в полный экран, все кнопки и тд. остаются неизменными и просто перемещаются в левый верхний угол.
Менеджер .pack() принимает некоторые ключевые аргументы для более точной настройки размещения виджетов. К примеру, можно установить ключевой аргумент fill для уточнения в какое направление рамки будут пополняться. Доступная опция tk.X для горизонтального направления, tk.Y для вертикального направления и tk.BOTH для обоих. Далее представлен код для горизонтального заполнения окна тремя рамками:
Python
import tkinter as tk
window = tk.Tk()
frame1 = tk.Frame(master=window, height=100, bg="red")
frame1.pack(fill=tk.X)
frame2 = tk.Frame(master=window, height=50, bg="yellow")
frame2.pack(fill=tk.X)
frame3 = tk.Frame(master=window, height=25, bg="blue")
frame3.pack(fill=tk.X)
window.mainloop()
Обратите внимание, что для виджета рамки ширина width не установлена. Аргумент width больше не требуется, так как каждая рамка задействует .pack() для горизонтального заполнения, переписывая любой индивидуальный параметр ширины.
Одна из приятных особенностей заполнения окна с помощью .pack() заключается в том, что содержимое реагирует на изменение размера окна. Попробуйте расширить окно, созданное предыдущим скриптом, чтобы увидеть, как это работает. Когда вы расширяете окно, ширина трех рамок внутри также увеличивается, заполняя окно
https://python-scripts.com/tkinter - куча ответов как что расположить чтоб оно само ресайзилось и центровалось с кодом и гифками результатов.
для произовольных форм типа дыр в форме(окне приложения) под виндовс нужно применять к форме регионы. это можно сделать на winapi
или рисовать псевдопрозрачность перебирая окна под собой и отрисовывая их гдето на своей форме.