/
PyBaseConverter.py
86 lines (71 loc) · 2.86 KB
/
PyBaseConverter.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
## Copyright 2016 Javier Serrano and Adrian Serrano
##
## This file is part of PyBaseConverter.
##
## PyBaseConverter is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## PyBaseConverter is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with PyBaseConverter. If not, see <http://www.gnu.org/licenses/>.
"""A base converter written in Python.
This code can only convert from/to bases from 2-10.
"""
from PyQt5.QtWidgets import QApplication, QWidget, \
QLabel, QLineEdit, QPushButton, \
QVBoxLayout, QGridLayout
import Number
class Form(QWidget):
""" Class derived from QWidget to hold our top-level window.
Public methods:
__init__ : initialize Form
submitNumbers: calculate number in new base
"""
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.number = Number.Number(1)
numberFromLabel = QLabel("Number:")
self.numberFromLine = QLineEdit()
baseFromLabel = QLabel("From Base:")
self.baseFromLine = QLineEdit()
baseToLabel = QLabel("To Base:")
self.baseToLine = QLineEdit()
self.submitButton = QPushButton("Convert!")
self.resultLabel = QLabel("")
vLayout1 = QVBoxLayout()
vLayout1.addWidget(numberFromLabel)
vLayout1.addWidget(self.numberFromLine)
vLayout1.addWidget(baseFromLabel)
vLayout1.addWidget(self.baseFromLine)
vLayout1.addWidget(baseToLabel)
vLayout1.addWidget(self.baseToLine)
vLayout1.addWidget(self.submitButton)
vLayout1.addWidget(self.resultLabel)
self.submitButton.clicked.connect(self.submitNumbers)
mainLayout = QGridLayout()
mainLayout.addLayout(vLayout1, 0, 1)
self.setLayout(mainLayout)
self.setWindowTitle("Base converter")
def submitNumbers(self):
try:
number_from = self.numberFromLine.text()
base_from = int(self.baseFromLine.text())
base_to = int(self.baseToLine.text())
self.number.set(base_from, number_from)
result = self.number.get(base_to)
except ValueError as err:
self.resultLabel.setText("Value Error: " + str(err))
else:
self.resultLabel.setText("The result is " + result)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
screen = Form()
screen.show()
sys.exit(app.exec_())