-
Notifications
You must be signed in to change notification settings - Fork 0
/
f2c.py
89 lines (77 loc) · 3.75 KB
/
f2c.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
import sys
from PySide6.QtWidgets import (QLineEdit, QPushButton, QApplication, QVBoxLayout, QHBoxLayout, QDialog, QComboBox, QLabel)
class Form(QDialog):
def __init__(self):
super().__init__()
# Window title and fixed size
self.setWindowTitle("f2c")
self.setFixedSize(400, 200)
# Widgets
self.edit = QLineEdit()
self.edit.setFixedWidth(150)
self.combobox = QComboBox()
self.combobox.addItems(["\U000000B0F to \U000000B0C",
"inch to centimetre",
"foot to centimetre",
"yard to metre",
"mile to kilometre",
"ounce to gram",
"pound to kilogram",
"fluid ounce to millilitre",
"quart to litre",
"gallon to litre"])
self.button = QPushButton("Convert")
self.label = QLabel()
# Layout
layout = QVBoxLayout()
top_layout = QHBoxLayout()
top_layout.addWidget(self.edit)
top_layout.addWidget(self.combobox)
top_layout.addWidget(self.button)
layout.addLayout(top_layout)
layout.addWidget(self.label)
self.setLayout(layout)
# Connecting Signals to Slot
self.button.clicked.connect(self.convert)
self.combobox.currentIndexChanged.connect(self.convert)
# Convert from imperial units to metric units
def convert(self):
try:
conversion_type = str(self.combobox.currentText())
if conversion_type == "\U000000B0F to \U000000B0C":
result = "{:.2f}".format((float(self.edit.text()) - 32) * (5 / 9)) + " \U000000B0C (2d.p.)"
self.label.setText(result)
elif conversion_type == "inch to centimetre":
result = "{:.2f}".format(float(self.edit.text()) * 2.54) + " cm (2d.p.)"
self.label.setText(result)
elif conversion_type == "foot to centimetre":
result = "{:.2f}".format(float(self.edit.text()) * 30.48) + " cm (2d.p.)"
self.label.setText(result)
elif conversion_type == "yard to metre":
result = "{:.2f}".format(float(self.edit.text()) / 1.094) + " m (2d.p.)"
self.label.setText(result)
elif conversion_type == "mile to kilometre":
result = "{:.2f}".format(float(self.edit.text()) * 1.609) + " km (2d.p.)"
self.label.setText(result)
elif conversion_type == "ounce to gram":
result = "{:.2f}".format(float(self.edit.text()) * 28.35) + " g (2d.p.)"
self.label.setText(result)
elif conversion_type == "pound to kilogram":
result = "{:.2f}".format(float(self.edit.text()) / 2.205) + " kg (2d.p.)"
self.label.setText(result)
elif conversion_type == "fluid ounce to millilitre":
result = "{:.2f}".format(float(self.edit.text()) * 29.574) + " ml (2d.p.)"
self.label.setText(result)
elif conversion_type == "quart to litre":
result = "{:.2f}".format(float(self.edit.text()) / 1.057) + " l (2d.p.)"
self.label.setText(result)
elif conversion_type == "gallon to litre":
result = "{:.2f}".format(float(self.edit.text()) * 3.785) + " l (2d.p.)"
self.label.setText(result)
except ValueError:
self.label.setText("Invalid input value! Enter a number!")
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Form()
form.show()
sys.exit(app.exec())