Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import sip, sys
- from PyQt4.QtCore import SIGNAL
- from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout, QLabel, QComboBox
- class Form(QDialog):
- def __init__(self, parent=None):
- super(Form, self).__init__(parent)
- self.label1 = QLabel("A:")
- self.firstNumber = QLineEdit()
- self.label2 = QLabel(u"Система счисления A:")
- self.firstRadix = QComboBox()
- self.firstRadix.addItem("2")
- self.firstRadix.addItem("8")
- self.firstRadix.addItem("10")
- self.firstRadix.addItem("16")
- self.label3 = QLabel("A:")
- self.secondNumber = QLineEdit()
- self.label4 = QLabel(u"Система счисления B:")
- self.secondRadix = QComboBox()
- self.secondRadix.addItem("2")
- self.secondRadix.addItem("8")
- self.secondRadix.addItem("10")
- self.secondRadix.addItem("16")
- self.label5 = QLabel(u"Операция:")
- self.operation = QComboBox()
- self.operation.addItem("+")
- self.operation.addItem("-")
- self.operation.addItem("*")
- self.operation.addItem("/")
- self.operation.addItem("or")
- self.operation.addItem("and")
- self.operation.addItem("xor")
- self.label6 = QLabel(u"Система счисления резульатата:")
- self.resultRadix = QComboBox()
- self.resultRadix.addItem("2")
- self.resultRadix.addItem("8")
- self.resultRadix.addItem("10")
- self.resultRadix.addItem("16")
- self.pb = QPushButton(u"Расчёт")
- self.result = QLineEdit()
- layout = QFormLayout()
- layout.addWidget(self.label1)
- layout.addWidget(self.firstNumber)
- layout.addWidget(self.label2)
- layout.addWidget(self.firstRadix)
- layout.addWidget(self.label3)
- layout.addWidget(self.secondNumber)
- layout.addWidget(self.label4)
- layout.addWidget(self.secondRadix)
- layout.addWidget(self.label5)
- layout.addWidget(self.operation)
- layout.addWidget(self.label6)
- layout.addWidget(self.resultRadix)
- layout.addWidget(self.pb)
- layout.addWidget(self.result)
- self.setLayout(layout)
- self.connect(self.pb, SIGNAL("clicked()"),self.button_click)
- self.resize(320, 320);
- self.setWindowTitle("PFUR")
- def strb(self, n, base):
- t = "0123456789ABCDEF"
- res = ""
- while n:
- res += t[n % base]
- n //= base
- return res[::-1]
- def button_click(self):
- rad1 = int(self.firstRadix.currentText())
- rad2 = int(self.secondRadix.currentText())
- rad3 = int(self.resultRadix.currentText())
- try:
- if self.operation.currentText() == '+':
- self.result.setText(self.strb(int(str(self.firstNumber.text()), rad1) + int(str(self.secondNumber.text()), rad2), rad3))
- if self.operation.currentText() == '*':
- self.result.setText(self.strb(int(str(self.firstNumber.text()), rad1) * int(str(self.secondNumber.text()), rad2), rad3))
- if self.operation.currentText() == '/':
- self.result.setText(self.strb(int(str(self.firstNumber.text()), rad1) / int(str(self.secondNumber.text()), rad2), rad3))
- if self.operation.currentText() == '-':
- self.result.setText(self.strb(int(str(self.firstNumber.text()), rad1) - int(str(self.secondNumber.text()), rad2), rad3))
- if self.operation.currentText() == 'or':
- self.result.setText(self.strb(int(str(self.firstNumber.text()), rad1) | int(str(self.secondNumber.text()), rad2), rad3))
- if self.operation.currentText() == 'xor':
- self.result.setText(self.strb(int(str(self.firstNumber.text()), rad1) ^ int(str(self.secondNumber.text()), rad2), rad3))
- if self.operation.currentText() == 'and':
- self.result.setText(self.strb(int(str(self.firstNumber.text()), rad1) & int(str(self.secondNumber.text()), rad2), rad3))
- except ZeroDivisionError:
- self.result.setText(u"Деление на 0 запрещено")
- except ValueError:
- f = str(self.firstNumber.text())
- s = str(self.secondNumber.text())
- if(len(f) == 0 and len(s) == 0):
- self.result.setText(u"Введите необходимые данные в поля для ввода")
- elif(len(f) == 0):
- try:
- self.result.setText(self.strb(int(s, rad2), rad3))
- except ValueError:
- self.result.setText(u"Введённые данные не корректны")
- else:
- try:
- self.result.setText(self.strb(int(f, rad1), rad3))
- except ValueError:
- self.result.setText(u"Введённые данные не корректны")
- app = QApplication(sys.argv)
- form = Form()
- form.show()
- app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement