-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
144 lines (114 loc) · 4.73 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
from typing import Text
from kivymd.uix.screen import MDScreen
from kivymd.app import MDApp
from kivy.uix.image import Image
from kivymd.uix.button import MDFillRoundFlatIconButton, MDFillRoundFlatButton
from kivymd.uix.textfield import MDTextField
from kivymd.uix.label import MDLabel
from kivymd.uix.toolbar import MDToolbar
class ConverterApp(MDApp):
def flip(self):
"""[summary]
"""
if self.state == 0:
self.state = 1
self.toolbar.title = "Decimal to Binary"
self.input.text = "Enter a Decimal number"
self.converted.text = ""
self.label.text = ""
else:
self.state = 0
self.toolbar.title = "Binary to Decimal"
self.input.text = "Enter a Binary number"
self.converted.text = ""
self.label.text = ""
def convert(self, args):
"""[summary]
Args:
args ([type]): [description]
"""
# Conversione bin -> dec
if self.state == 0:
# Prelevo il numero immesso nella finestra
usr_input = self.input.text
# Check se non è stato inserito un valore valido
if usr_input == '' or usr_input == 'Enter a Binary Number':
self.label.text = "Enter a valid number "
self.converted.text = ""
else:
# Converto in binario
val = int(usr_input, 2)
# Aggiorna il testo di "converted" con il risultato della conversione
self.converted.text = str(val)
self.label.text = "In decimal is: "
# Conversione dec -> bin
else:
# Prelevo il numero immesso nella finestra
usr_input = self.input.text
# Check se non è stato inserito un valore valido
if usr_input == '' or usr_input == 'Enter a Decimal number' :
self.label.text = "Enter a valid number "
self.converted.text = ""
else:
# Converto in Decimale: le stringhe una volta convertite in
# binario sono nella forma 0b1000 con [2:] elimino 0b
val = bin(int(usr_input))[2:]
# Aggiorna il testo di "converted" con il risultato della conversione
self.converted.text = str(val)
self.label.text = "In binary is: "
def build(self):
"""[summary]
Returns:
[type]: [description]
"""
self.state = 0
self.theme_cls.primary_palette = "Teal"
# Display della schermata
screen = MDScreen()
# Dichiaro l'oggetto toolbar
self.toolbar = MDToolbar(title="Binary To Decimal")
# Decido la posizione della toolbar
self.toolbar.pos_hint = {"top":1}
# Aggiunge una icona nella toolbar e premendola si attiva la funzione flip()
self.toolbar.right_action_items = [
["rotate-3d-variant", lambda x:self.flip()]]
# Aggiunge la Toolbar alla finestra
screen.add_widget(self.toolbar)
# Logo
screen.add_widget(Image(
source="logo.png",
pos_hint = {"center_x": 0.5, "center_y": 0.69 }
))
# Widget per collezionare l'input dell'utente
self.input = MDTextField(
text = "Enter a Binary Number",
halign = "center",
size_hint = (0.8,1),
pos_hint = {"center_x": 0.5, "center_y": 0.45 },
font_size = 22
)
screen.add_widget(self.input)
# Label primaria e secondaria
self.label = MDLabel(
halign = "center",
pos_hint = {"center_x": 0.5, "center_y": 0.35 },
theme_text_color = "Secondary"
)
self.converted = MDLabel(
halign = "center",
pos_hint = {"center_x": 0.5, "center_y": 0.3 },
theme_text_color = "Primary",
font_style ="H5"
)
screen.add_widget(self.label)
screen.add_widget(self.converted)
# Pulsante Conversione
screen.add_widget(MDFillRoundFlatButton(
text= "CONVERT",
font_size = 17,
pos_hint = {"center_x": 0.5, "center_y": 0.15 },
on_press = self.convert
))
return screen
if __name__ == '__main__':
ConverterApp().run()