BorleLib 0.1.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- borlelib-0.1.6/BorleLib/__init__.py +1 -0
- borlelib-0.1.6/BorleLib/mia_libreria.py +190 -0
- borlelib-0.1.6/BorleLib.egg-info/PKG-INFO +46 -0
- borlelib-0.1.6/BorleLib.egg-info/SOURCES.txt +8 -0
- borlelib-0.1.6/BorleLib.egg-info/dependency_links.txt +1 -0
- borlelib-0.1.6/BorleLib.egg-info/top_level.txt +1 -0
- borlelib-0.1.6/PKG-INFO +46 -0
- borlelib-0.1.6/README.md +34 -0
- borlelib-0.1.6/pyproject.toml +24 -0
- borlelib-0.1.6/setup.cfg +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from mia_libreria import *
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import math
|
|
2
|
+
import tkinter as tk
|
|
3
|
+
from tkinter import messagebox
|
|
4
|
+
|
|
5
|
+
# Le tue funzioni matematiche (utilizzabili anche per logica esterna)
|
|
6
|
+
def somma(a, b):
|
|
7
|
+
return a + b
|
|
8
|
+
|
|
9
|
+
def sottrazione(a, b):
|
|
10
|
+
return a - b
|
|
11
|
+
|
|
12
|
+
def moltiplicazione(a, b):
|
|
13
|
+
return a * b
|
|
14
|
+
|
|
15
|
+
def divisione(a, b):
|
|
16
|
+
return a / b
|
|
17
|
+
|
|
18
|
+
def radice(a):
|
|
19
|
+
return math.sqrt(a)
|
|
20
|
+
|
|
21
|
+
def elevamento(a, b):
|
|
22
|
+
return pow(a, b)
|
|
23
|
+
|
|
24
|
+
def CalcTk():
|
|
25
|
+
# Funzione per aggiornare l'espressione nello schermo
|
|
26
|
+
# Nota il "valore=valore": serve a bloccare la variabile nel lambda evitando il bug dei bottoni identici
|
|
27
|
+
def click_bottone(valore):
|
|
28
|
+
testo_attuale = schermo.get()
|
|
29
|
+
schermo.delete(0, tk.END)
|
|
30
|
+
schermo.insert(tk.END, testo_attuale + str(valore))
|
|
31
|
+
|
|
32
|
+
# Funzione per cancellare tutto (All Clear)
|
|
33
|
+
def cancella_tutto():
|
|
34
|
+
schermo.delete(0, tk.END)
|
|
35
|
+
|
|
36
|
+
# Funzione per cancellare l'ultimo carattere inserito (Backspace)
|
|
37
|
+
def cancella_ultimo():
|
|
38
|
+
testo_attuale = schermo.get()
|
|
39
|
+
schermo.delete(0, tk.END)
|
|
40
|
+
schermo.insert(tk.END, testo_attuale[:-1])
|
|
41
|
+
|
|
42
|
+
# Funzione per calcolare il risultato integrando le tue funzioni
|
|
43
|
+
def calcola():
|
|
44
|
+
try:
|
|
45
|
+
espressione = schermo.get()
|
|
46
|
+
|
|
47
|
+
# Sostituiamo i simboli visivi con gli operatori e le funzioni compatibili con eval()
|
|
48
|
+
# Mappiamo '^' a '**' e gestiamo la radice quadrata '√' tramite la tua funzione radice()
|
|
49
|
+
espressione_python = espressione.replace('×', '*').replace('÷', '/')
|
|
50
|
+
espressione_python = espressione_python.replace('^', '**')
|
|
51
|
+
|
|
52
|
+
# Se è presente una radice (es. √9), la trasforma in radice(9) per eval
|
|
53
|
+
if '√' in espressione_python:
|
|
54
|
+
espressione_python = espressione_python.replace('√', 'radice(') + ')'
|
|
55
|
+
|
|
56
|
+
risultato = eval(espressione_python)
|
|
57
|
+
|
|
58
|
+
# Se il risultato è un numero intero, mostralo senza virgola
|
|
59
|
+
if isinstance(risultato, float) and risultato.is_integer():
|
|
60
|
+
risultato = int(risultato)
|
|
61
|
+
|
|
62
|
+
schermo.delete(0, tk.END)
|
|
63
|
+
schermo.insert(tk.END, str(risultato))
|
|
64
|
+
except ZeroDivisionError:
|
|
65
|
+
messagebox.showerror("Errore", "Impossibile dividere per zero")
|
|
66
|
+
cancella_tutto()
|
|
67
|
+
except Exception:
|
|
68
|
+
messagebox.showerror("Errore", "Espressione non valida")
|
|
69
|
+
cancella_tutto()
|
|
70
|
+
|
|
71
|
+
# Creazione della finestra principale
|
|
72
|
+
finestra = tk.Tk()
|
|
73
|
+
finestra.title("Calcolatrice")
|
|
74
|
+
finestra.geometry("380x550") # Leggermente allargata per fare spazio ai nuovi tasti
|
|
75
|
+
finestra.configure(bg="#171c2c")
|
|
76
|
+
finestra.resizable(False, False)
|
|
77
|
+
|
|
78
|
+
# Schermo di inserimento/output
|
|
79
|
+
schermo = tk.Entry(
|
|
80
|
+
finestra,
|
|
81
|
+
font=("Helvetica", 24),
|
|
82
|
+
bd=0,
|
|
83
|
+
bg="#1e2436",
|
|
84
|
+
fg="#ffffff",
|
|
85
|
+
justify="right"
|
|
86
|
+
)
|
|
87
|
+
schermo.pack(fill="both", ipadx=8, ipady=20, padx=15, pady=20)
|
|
88
|
+
|
|
89
|
+
# Contenitore per i bottoni (Griglia)
|
|
90
|
+
griglia_bottoni = tk.Frame(finestra, bg="#171c2c")
|
|
91
|
+
griglia_bottoni.pack(fill="both", expand=True, padx=15, pady=15)
|
|
92
|
+
|
|
93
|
+
# Configurazione della griglia (ora abbiamo 6 righe per includere √ e ^)
|
|
94
|
+
for i in range(6):
|
|
95
|
+
griglia_bottoni.rowconfigure(i, weight=1)
|
|
96
|
+
for i in range(4):
|
|
97
|
+
griglia_bottoni.columnconfigure(i, weight=1)
|
|
98
|
+
|
|
99
|
+
# Definizione dei bottoni aggiornata con Radice (√) ed Elevamento (^)
|
|
100
|
+
bottoni = [
|
|
101
|
+
('AC', 0, 0, 'funzione'), ('C', 0, 1, 'funzione'), ('^', 0, 2, 'operatore'), ('÷', 0, 3, 'operatore'),
|
|
102
|
+
('√', 1, 0, 'operatore'), ('%', 1, 1, 'funzione'), ('(', 1, 2, 'funzione'), (')', 1, 3, 'funzione'),
|
|
103
|
+
('7', 2, 0, 'numero'), ('8', 2, 1, 'numero'), ('9', 2, 2, 'numero'), ('×', 2, 3, 'operatore'),
|
|
104
|
+
('4', 3, 0, 'numero'), ('5', 3, 1, 'numero'), ('6', 3, 2, 'numero'), ('-', 3, 3, 'operatore'),
|
|
105
|
+
('1', 4, 0, 'numero'), ('2', 4, 1, 'numero'), ('3', 4, 2, 'numero'), ('+', 4, 3, 'operatore'),
|
|
106
|
+
('0', 5, 0, 'numero'), ('.', 5, 1, 'numero'), ('=', 5, 2, 'uguale')
|
|
107
|
+
]
|
|
108
|
+
|
|
109
|
+
colori = {
|
|
110
|
+
'numero': {'bg': '#2d3250', 'fg': '#ffffff'},
|
|
111
|
+
'operatore': {'bg': '#ff9f43', 'fg': '#ffffff'},
|
|
112
|
+
'funzione': {'bg': '#4d547d', 'fg': '#ffffff'},
|
|
113
|
+
'uguale': {'bg': '#10ac84', 'fg': '#ffffff'}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# Creazione e posizionamento dei bottoni nella griglia
|
|
117
|
+
for testo, riga, colonna, tipo in bottoni:
|
|
118
|
+
if testo == '=':
|
|
119
|
+
comando = calcola
|
|
120
|
+
elif testo == 'AC':
|
|
121
|
+
comando = cancella_tutto
|
|
122
|
+
elif testo == 'C':
|
|
123
|
+
comando = cancella_ultimo
|
|
124
|
+
else:
|
|
125
|
+
# FIX IMPORTANTE: inserendo "t=testo", Python salva il valore corretto per ogni singolo bottone
|
|
126
|
+
comando = lambda t=testo: click_bottone(t)
|
|
127
|
+
|
|
128
|
+
colspan = 2 if testo == '=' else 1
|
|
129
|
+
|
|
130
|
+
btn = tk.Button(
|
|
131
|
+
griglia_bottoni,
|
|
132
|
+
text=testo,
|
|
133
|
+
font=("Helvetica", 14, "bold"),
|
|
134
|
+
bd=0,
|
|
135
|
+
bg=colori[tipo]['bg'],
|
|
136
|
+
fg=colori[tipo]['fg'],
|
|
137
|
+
activebackground=colori[tipo]['bg'],
|
|
138
|
+
command=comando
|
|
139
|
+
)
|
|
140
|
+
btn.grid(row=riga, column=colonna, columnspan=colspan, sticky="nsew", padx=4, pady=4)
|
|
141
|
+
|
|
142
|
+
finestra.mainloop()
|
|
143
|
+
|
|
144
|
+
import turtle
|
|
145
|
+
|
|
146
|
+
import turtle
|
|
147
|
+
|
|
148
|
+
def draw(forma):
|
|
149
|
+
# Trasforma la scritta in minuscolo per evitare errori con le maiuscole
|
|
150
|
+
forma = forma.lower().strip()
|
|
151
|
+
|
|
152
|
+
# Inizializzazione della finestra e di Turtle
|
|
153
|
+
finestra = turtle.Screen()
|
|
154
|
+
finestra.title("Disegnatore Geometrico")
|
|
155
|
+
finestra.bgcolor("#171c2c")
|
|
156
|
+
|
|
157
|
+
t = turtle.Turtle()
|
|
158
|
+
t.speed(3)
|
|
159
|
+
t.pensize(4)
|
|
160
|
+
|
|
161
|
+
# Controllo del testo inserito
|
|
162
|
+
if forma == "triangolo":
|
|
163
|
+
t.pencolor("#ff9f43") # Arancione
|
|
164
|
+
for _ in range(3):
|
|
165
|
+
t.forward(150)
|
|
166
|
+
t.left(120)
|
|
167
|
+
|
|
168
|
+
elif forma == "quadrato":
|
|
169
|
+
t.pencolor("#10ac84") # Verde
|
|
170
|
+
for _ in range(4):
|
|
171
|
+
t.forward(150)
|
|
172
|
+
t.left(90)
|
|
173
|
+
|
|
174
|
+
elif forma == "esagono":
|
|
175
|
+
t.pencolor("#00d2d3") # Azzurro
|
|
176
|
+
for _ in range(6):
|
|
177
|
+
t.forward(100)
|
|
178
|
+
t.left(60)
|
|
179
|
+
|
|
180
|
+
elif forma == "ottagono":
|
|
181
|
+
t.pencolor("#9b59b6") # Viola
|
|
182
|
+
for _ in range(8):
|
|
183
|
+
t.forward(80)
|
|
184
|
+
t.left(45)
|
|
185
|
+
|
|
186
|
+
else:
|
|
187
|
+
print(f"Errore: la forma '{forma}' non è supportata.")
|
|
188
|
+
|
|
189
|
+
t.hideturtle()
|
|
190
|
+
finestra.exitonclick()
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: BorleLib
|
|
3
|
+
Version: 0.1.6
|
|
4
|
+
Summary: La mia libreria personalizzata
|
|
5
|
+
Author-email: Il Tuo Nome <tua.email@esempio.com>
|
|
6
|
+
Project-URL: Homepage, https://github.com
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >=3.8
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
|
|
13
|
+
# BorleLib 🚀
|
|
14
|
+
|
|
15
|
+
Una libreria Python semplice e potente per effettuare calcoli matematici senza errori di approssimazione.
|
|
16
|
+
|
|
17
|
+
## ✨ Funzionalità
|
|
18
|
+
- Calcoli matematici precisi ed esatti.
|
|
19
|
+
- Gestione semplificata dei moduli.
|
|
20
|
+
- Integrazione nativa con i tipi di dati standard di Python.
|
|
21
|
+
|
|
22
|
+
## 📦 Installazione
|
|
23
|
+
|
|
24
|
+
Puoi installare la libreria direttamente da PyPI usando `pip`:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install BorleLib
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 🛠️ Come usarla
|
|
31
|
+
|
|
32
|
+
Ecco un esempio pratico di utilizzo del modulo `calcolatrice`:
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
import BorleLib
|
|
36
|
+
|
|
37
|
+
# Esempio di utilizzo delle funzioni della libreria
|
|
38
|
+
risultato = BorleLib.somma(5, 7)
|
|
39
|
+
print(f"Il risultato della somma è: {risultato}")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 📝 Licenza
|
|
43
|
+
Questo progetto è distribuito sotto licenza **MIT**. Vedi il file `LICENSE` per maggiori dettagli.
|
|
44
|
+
|
|
45
|
+
## 👤 Autore
|
|
46
|
+
- **Il Tuo Nome** - [Il tuo GitHub](https://github.com)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
BorleLib
|
borlelib-0.1.6/PKG-INFO
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: BorleLib
|
|
3
|
+
Version: 0.1.6
|
|
4
|
+
Summary: La mia libreria personalizzata
|
|
5
|
+
Author-email: Il Tuo Nome <tua.email@esempio.com>
|
|
6
|
+
Project-URL: Homepage, https://github.com
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >=3.8
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
|
|
13
|
+
# BorleLib 🚀
|
|
14
|
+
|
|
15
|
+
Una libreria Python semplice e potente per effettuare calcoli matematici senza errori di approssimazione.
|
|
16
|
+
|
|
17
|
+
## ✨ Funzionalità
|
|
18
|
+
- Calcoli matematici precisi ed esatti.
|
|
19
|
+
- Gestione semplificata dei moduli.
|
|
20
|
+
- Integrazione nativa con i tipi di dati standard di Python.
|
|
21
|
+
|
|
22
|
+
## 📦 Installazione
|
|
23
|
+
|
|
24
|
+
Puoi installare la libreria direttamente da PyPI usando `pip`:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install BorleLib
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 🛠️ Come usarla
|
|
31
|
+
|
|
32
|
+
Ecco un esempio pratico di utilizzo del modulo `calcolatrice`:
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
import BorleLib
|
|
36
|
+
|
|
37
|
+
# Esempio di utilizzo delle funzioni della libreria
|
|
38
|
+
risultato = BorleLib.somma(5, 7)
|
|
39
|
+
print(f"Il risultato della somma è: {risultato}")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 📝 Licenza
|
|
43
|
+
Questo progetto è distribuito sotto licenza **MIT**. Vedi il file `LICENSE` per maggiori dettagli.
|
|
44
|
+
|
|
45
|
+
## 👤 Autore
|
|
46
|
+
- **Il Tuo Nome** - [Il tuo GitHub](https://github.com)
|
borlelib-0.1.6/README.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# BorleLib 🚀
|
|
2
|
+
|
|
3
|
+
Una libreria Python semplice e potente per effettuare calcoli matematici senza errori di approssimazione.
|
|
4
|
+
|
|
5
|
+
## ✨ Funzionalità
|
|
6
|
+
- Calcoli matematici precisi ed esatti.
|
|
7
|
+
- Gestione semplificata dei moduli.
|
|
8
|
+
- Integrazione nativa con i tipi di dati standard di Python.
|
|
9
|
+
|
|
10
|
+
## 📦 Installazione
|
|
11
|
+
|
|
12
|
+
Puoi installare la libreria direttamente da PyPI usando `pip`:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install BorleLib
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 🛠️ Come usarla
|
|
19
|
+
|
|
20
|
+
Ecco un esempio pratico di utilizzo del modulo `calcolatrice`:
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
import BorleLib
|
|
24
|
+
|
|
25
|
+
# Esempio di utilizzo delle funzioni della libreria
|
|
26
|
+
risultato = BorleLib.somma(5, 7)
|
|
27
|
+
print(f"Il risultato della somma è: {risultato}")
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 📝 Licenza
|
|
31
|
+
Questo progetto è distribuito sotto licenza **MIT**. Vedi il file `LICENSE` per maggiori dettagli.
|
|
32
|
+
|
|
33
|
+
## 👤 Autore
|
|
34
|
+
- **Il Tuo Nome** - [Il tuo GitHub](https://github.com)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "BorleLib" # Nome ufficiale per pip install
|
|
7
|
+
version = "0.1.6" # Aggiornato a 0.1.6 per evitare conflitti su PyPI
|
|
8
|
+
authors = [
|
|
9
|
+
{ name="Il Tuo Nome", email="tua.email@esempio.com" },
|
|
10
|
+
]
|
|
11
|
+
description = "La mia libreria personalizzata"
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
requires-python = ">=3.8"
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"License :: OSI Approved :: MIT License",
|
|
17
|
+
"Operating System :: OS Independent",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
[project.urls]
|
|
21
|
+
Homepage = "https://github.com"
|
|
22
|
+
|
|
23
|
+
[tool.setuptools]
|
|
24
|
+
packages = ["BorleLib"] # Forza l'inclusione esatta della cartella BorleLib senza cercare 'src'
|
borlelib-0.1.6/setup.cfg
ADDED