Skip to content

Commit

Permalink
#25 Novo repositório limpo e configurado
Browse files Browse the repository at this point in the history
Add tudo novamente cocm o gitignore ativado e removendo o executável por hora.
  • Loading branch information
Gui25Reis committed Jan 3, 2021
1 parent 2f28ec0 commit 5311423
Show file tree
Hide file tree
Showing 29 changed files with 1,712 additions and 0 deletions.
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
## Ignorando todos os arquivos de photoshop
*.psd

## Ignorando arquivos de cache + pasta vscode
_main/__pycache__/*
_main/.vscode/*

## Ignorando outro executável
arquivos/outras-versoes/_outros/Testes/

## Ignorando outras versões da documentação
arquivos/_documentacao/_caso-de-uso/_outros/*
arquivos/_documentacao/_cenário-de-negócio/_outros/*
arquivos/_documentacao/_diagrama-de-classe/_outros/*
arquivos/_documentacao/_tutorial_outros/*
arquivos/_documentacao/_vídeo/_edição/*
121 changes: 121 additions & 0 deletions _main/GUI.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
###### Gui Reis - guisreis25@gmail.com ###### COPYRIGHT © 2020 KINGS - All rights reserved

# -*- coding: utf-8 -*-


## Classe responsável pela criação da interface gráfica

## Bibliotecas necessárias:
# Arquivo local
import mudanca_base as md

# GUI
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtGui import QFont, QIcon


class Gui(QtWidgets.QMainWindow):
## Construtor: define a super classe e também a janela principal
def __init__(self):
super(Gui, self).__init__()

self.setWindowIcon(QIcon('images/icon.png')) # Define o ícone
self.setWindowTitle(" ") # Define o título (título vazio)
self.setFixedSize(180, 290) # Sempre vai ser esse tamanho

self.gui_Ui() # Chama o método de construção da GUI

self.res = '' # Atributo que guarda o texto mostrado ao usuário


def gui_Ui(self):
root = QtWidgets.QWidget(self) # Área principal (root), onde tudo vai ser colocado dentro
root.setMaximumSize(QtCore.QSize(180, 290)) # Define o tamanho máximo que ela chega
self.setCentralWidget(root) # Define como área central

## ------------------------------------------------------------------------------------------------
## Entrada do número:
lb_Entrada = self.lbl("Número", 12, 10, 10, 151, 31, root) # Cria a lbl com as coordenadas
lb_Entrada.setAlignment(QtCore.Qt.AlignCenter) # Alinhamento: texto no centro

self.ent_Entrada = QtWidgets.QTextEdit(root) # Cria a entrada de texto
self.ent_Entrada.setGeometry(QtCore.QRect(10, 40, 161, 21)) # Define a posição
self.ent_Entrada.setMaximumSize(161, 21) # Define o tamanho máximo da entrada
self.ent_Entrada.setFont(QFont('Arial', 12)) # Fonte
self.ent_Entrada.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) # Tira a barra de rolagem

## ------------------------------------------------------------------------------------------------
## Base inicial:
lb_Inicial = self.lbl("Base inicial", 12, 10, 80, 91, 21, root) # Cria a lbl com as coordenadas
lb_Inicial.setAlignment(QtCore.Qt.AlignRight) # Alinhamento: texto na direita

self.ent_Inicial = self.ent(12, 110, 80, 51, 21, root) # Cria a entrada de texto com as coordenadas

## ------------------------------------------------------------------------------------------------
## Base final:
lb_Final = self.lbl("Base final", 12, 20, 110, 81, 21, root) # Cria a lbl com as coordenadas
lb_Final.setAlignment(QtCore.Qt.AlignRight) # Alinhamento: texto na direita

self.ent_Final = self.ent(12, 110, 110, 51, 21, root) # Cria a entrada de texto com as coordenadas

## ------------------------------------------------------------------------------------------------
## Calcular:
bt_Calcular = QtWidgets.QPushButton("Calcular", root) # Cria o botão
bt_Calcular.setGeometry(QtCore.QRect(40, 150, 101, 23)) # Define a posição
bt_Calcular.clicked.connect(self.cal_pressed) # Add a ação dele

self.lb_Resposta = QtWidgets.QTextBrowser(root) # Cria a saída de texto
self.lb_Resposta.setGeometry(QtCore.QRect(10, 180, 161, 51)) # Define sua posição

## ------------------------------------------------------------------------------------------------
## Copyright:
txt_Copyright = "COPYRIGHT © 2020 KINGS\nAll rights reserved" # Texto copyright
copyright_Txt = self.lbl(txt_Copyright, 7, 20, 240, 141, 31, root) # Cria a lbl com as coordenadas
copyright_Txt.setFont(QFont('Arial',7, QFont.Bold)) # Fonte
copyright_Txt.setAlignment(QtCore.Qt.AlignCenter) # Alinhamento: texto no centro


## ------------------------------------------------------------------------------------------------
## ------------------------------------------------------------------------------------------------
### Funções gerais:

# Cria todas as lbls
def lbl(self, txt_, tam_, p1_, p2_, p3_, p4_, wid_):
lb = QtWidgets.QLabel(txt_, wid_) # Cria uma label
lb.setGeometry(QtCore.QRect(p1_, p2_, p3_, p4_)) # Define a posição
lb.setFont(QFont('Arial', tam_)) # Define a fonte
return lb # Retorna a label

# Cria as entradas numéricas
def ent(self, tam_, p1_, p2_, p3_, p4_, wid_):
ent = QtWidgets.QSpinBox(wid_) # Cria uma entrada de números
ent.setGeometry(QtCore.QRect(p1_, p2_, p3_, p4_)) # Define a posição
ent.setFont(QFont('Arial', tam_)) # Define a fonte
ent.setMinimum(2) # Número mínimo
ent.setMaximum(36) # Número máximo
return ent # Retorna a entrada

# Caso aconteça algum erro esse método eh chamado
def error(self):
self.ent_Entrada.setStyleSheet(
"QTextEdit {background-color: rgb(255, 127, 127);}") # Cor de fundo fica vermelho

self.res = "Número inválido!\n\n" + self.res # Mensagem de número inválido

# Pegar os dados de entrada
def cal_pressed(self):
num = self.ent_Entrada.toPlainText() # Pega a entrada (número)
bi = int(self.ent_Inicial.text()) # Base inicial
bf = int(self.ent_Final.text()) # Base final
mudan = md.Mudan_Base(num, bi, bf) # Instancia um objeto da classe mudança de base
if (mudan.is_possible()): # Verifica se eh possivel
self.res = f"O número {num} [{bi} -> {bf}] = {mudan.result()}\n\n" + self.res # Adiciona o resultado
self.ent_Entrada.setStyleSheet("QTextEdit {background-color: rgb(255, 255, 255);}") # Deixa o fundo branco
else: self.error() # Se não for possível chama o erro

self.ent_Inicial.setValue(2) # Deixa os valores como padrão
self.ent_Final.setValue(2)
self.ent_Entrada.setText('')
self.lb_Resposta.setText(self.res) # Mostra o resultado ao usuário

del mudan # Deleta o objeto instânciado
Binary file added _main/images/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions _main/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
###### Gui Reis - guisreis25@gmail.com ###### COPYRIGHT © 2020 KINGS - All rights reserved

## Arquivo main

## Bibliotecas:
# Sistema:
import sys

# Arquivo local
from GUI import *

# GUI:
from PyQt5.QtWidgets import QApplication

# main:
if __name__ == "__main__":
app = QApplication(sys.argv)
win = Gui()

win.show()
sys.exit(app.exec_())
33 changes: 33 additions & 0 deletions _main/main.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['main.py'],
pathex=['G:\\OneDrive\\Gui\\GuiTestes\\Python\\Projetos pessoais\\Mudança de Base\\Muduca-de-base\\_main'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False )
44 changes: 44 additions & 0 deletions _main/mudanca_base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
###### Gui Reis - guisreis25@gmail.com ###### COPYRIGHT © 2020 KINGS - All rights reserved


## Classe responsável por fazer a mudança de bases!

class Mudan_Base:
## Construtor: define os atributos (chamada por parâmetro)
def __init__(self, num_:str, bi_:int, bf_:int):
self.num_str = num_.lower() # Número a ser convertido
self.bi = bi_ # Base Inicial
self.bf = bf_ # Base Final

## Método que tranforma em decimal
def to_decimal(self): # 1ª Parte: conversão de qualquer base para decimal
return int(self.num_str, base = self.bi) # Retorna a mudança

## Método que tranforma de decimal pra base final
def to_baseFinal(self): # 2ª Parte: conversão de decimal para a base desejada
num_dec = self.to_decimal()
self.res = [] # Lista para guardar os resultados (os restos)
while num_dec != 0:
self.res.append(num_dec % self.bf) # Add na lista
num_dec = num_dec // self.bf # Substitui pelo quociente obtido.

## Verifica se o número pertence a base inicial
def is_possible(self):
try: # Try: tenta converter o número pra decimal
self.to_decimal()
return True # True: todos os números são da base inicial
except: return False # False: Se tiver algum número que não seja da base inicial

## Cria o resultado
def result(self):
if self.bf == 10 : # Se a base final for 10
return self.to_decimal() # Retorna apenas a 1ª parte (n eh necessário continuar)

self.to_baseFinal() # Se não faz a 2ª parte
res_str = '' # String para armazenar o resultado
for ind in range (len(self.res)-1, -1 , -1): # Loop: pega os números convertidos de trás pra frente
if self.res[ind] > 9: # Se for o número for uma letra (10,11..)
res_str += chr(55+self.res[ind]).upper() # Acha a letra correspondente
else: # Se não tiver letra
res_str += str(self.res[ind]) # Apenas add o próprio número
return res_str # Retorna o resultado
127 changes: 127 additions & 0 deletions arquivos/GUI/GUI_01.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'GUI_01.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(180, 290)
MainWindow.setMinimumSize(QtCore.QSize(180, 290))
MainWindow.setMaximumSize(QtCore.QSize(180, 290))
font = QtGui.QFont()
font.setPointSize(9)
font.setUnderline(False)
MainWindow.setFont(font)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lb_Resposta = QtWidgets.QTextBrowser(self.centralwidget)
self.lb_Resposta.setGeometry(QtCore.QRect(10, 180, 161, 51))
self.lb_Resposta.setObjectName("lb_Resposta")
self.nt_Calcular = QtWidgets.QPushButton(self.centralwidget)
self.nt_Calcular.setGeometry(QtCore.QRect(40, 150, 101, 23))
self.nt_Calcular.setObjectName("nt_Calcular")
self.ent_Inicial = QtWidgets.QSpinBox(self.centralwidget)
self.ent_Inicial.setGeometry(QtCore.QRect(110, 80, 51, 21))
font = QtGui.QFont()
font.setPointSize(12)
self.ent_Inicial.setFont(font)
self.ent_Inicial.setMinimum(2)
self.ent_Inicial.setMaximum(36)
self.ent_Inicial.setObjectName("ent_Inicial")
self.ent_Final = QtWidgets.QSpinBox(self.centralwidget)
self.ent_Final.setGeometry(QtCore.QRect(110, 110, 51, 21))
font = QtGui.QFont()
font.setPointSize(12)
self.ent_Final.setFont(font)
self.ent_Final.setMinimum(2)
self.ent_Final.setMaximum(36)
self.ent_Final.setObjectName("ent_Final")
self.lb_Final = QtWidgets.QLabel(self.centralwidget)
self.lb_Final.setGeometry(QtCore.QRect(20, 110, 81, 21))
font = QtGui.QFont()
font.setPointSize(12)
self.lb_Final.setFont(font)
self.lb_Final.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.lb_Final.setObjectName("lb_Final")
self.lb_Inicial = QtWidgets.QLabel(self.centralwidget)
self.lb_Inicial.setGeometry(QtCore.QRect(10, 80, 91, 21))
font = QtGui.QFont()
font.setPointSize(12)
self.lb_Inicial.setFont(font)
self.lb_Inicial.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.lb_Inicial.setObjectName("lb_Inicial")
self.lb_Entrada = QtWidgets.QLabel(self.centralwidget)
self.lb_Entrada.setGeometry(QtCore.QRect(10, 10, 151, 31))
font = QtGui.QFont()
font.setPointSize(12)
self.lb_Entrada.setFont(font)
self.lb_Entrada.setAlignment(QtCore.Qt.AlignCenter)
self.lb_Entrada.setObjectName("lb_Entrada")
self.ent_Entrada = QtWidgets.QTextEdit(self.centralwidget)
self.ent_Entrada.setGeometry(QtCore.QRect(10, 40, 161, 21))
font = QtGui.QFont()
font.setPointSize(11)
self.ent_Entrada.setFont(font)
self.ent_Entrada.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.ent_Entrada.setObjectName("ent_Entrada")
self.copyright_Txt = QtWidgets.QTextBrowser(self.centralwidget)
self.copyright_Txt.setGeometry(QtCore.QRect(20, 240, 141, 31))
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
font.setStrikeOut(False)
font.setStyleStrategy(QtGui.QFont.NoAntialias)
self.copyright_Txt.setFont(font)
self.copyright_Txt.setWhatsThis("")
self.copyright_Txt.setAutoFillBackground(True)
self.copyright_Txt.setStyleSheet("background-color: rgb(240, 240, 240);")
self.copyright_Txt.setFrameShape(QtWidgets.QFrame.NoFrame)
self.copyright_Txt.setFrameShadow(QtWidgets.QFrame.Plain)
self.copyright_Txt.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.copyright_Txt.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.copyright_Txt.setOverwriteMode(False)
self.copyright_Txt.setObjectName("copyright_Txt")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 180, 22))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.nt_Calcular.setText(_translate("MainWindow", "Calcular"))
self.lb_Final.setText(_translate("MainWindow", "Base final:"))
self.lb_Inicial.setText(_translate("MainWindow", "Base inicial:"))
self.lb_Entrada.setText(_translate("MainWindow", "Número:"))
self.copyright_Txt.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:9pt; font-weight:600; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:7pt;\">COPYRIGHT © 2020 KINGS</span></p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:7pt;\">All rights reserved</span></p></body></html>"))


if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Loading

0 comments on commit 5311423

Please sign in to comment.