Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- #------- TODO -----------#
- # X) Hacer GUI:
- # X) Hacer Pantallas -CHECK!
- # X) Agregar Message Boxes y limitaciones
- # 2) Integrar Comunicación
- # 2.1)
- # 3) Probar
- #-------------------------#
- import sys
- from socket import *
- from PySide import QtGui, QtCore
- from time import sleep
- class App(QtGui.QMainWindow):
- def __init__(self, parent=None):
- super(App, self).__init__(parent)
- self.comunica()
- self.initUI()
- def comunica(self):
- self.HOST = 'localhost'
- self.PORT = 9999
- self.ADDR = (self.HOST, self.PORT)
- self.BUFSIZE = 4096
- self.cli = socket(AF_INET, SOCK_STREAM)
- #self.cli.connect((self.ADDR))
- def sendData(self, func, user, monto=None, password=None):
- funcion = func
- usuario = user
- retiro = monto
- pw = password
- self.cli.send(funcion)
- sleep(2)
- self.cli.send(usuario)
- sleep(2)
- if monto == None:
- retiro = 'None'
- self.cli.send(retiro)
- sleep(2)
- if password == None:
- pw = 'None'
- self.cli.send(password)
- sleep(2)
- result = self.cli.recv(self.BUFSIZE)
- return result #Siempre es una string
- def initUI(self):
- self.statusBar().showMessage(str('Listo')) #Status Bar // str(self.cli.recv(self.BUFSIZE))
- self.central_widget = QtGui.QStackedWidget() #Crea un stacked widget
- self.setCentralWidget(self.central_widget) #Settea el stacked widget como widget central
- self.login_widget = LoginWidget(self) #Login Screen
- self.retiro_widget = RetiroWidget(self) #Retiro Screen
- self.saldo_widget = SaldoWidget(self) #Saldo Screen
- self.login_widget.loginButton.clicked.connect(self.login)
- self.central_widget.addWidget(self.login_widget)
- self.user = None
- self.saldo_user = None
- self.setGeometry(300, 300, 600, 280) #Window Size
- self.setWindowTitle('PyTransactio - Client') #Window Title
- self.setWindowIcon(QtGui.QIcon('icon.png')) #App Icon
- self.show()
- def login(self):
- """ Accede a la pantalla de login para seleccionar tarea """
- #Valida
- if self.login_widget.usuarioEdit.text() == '':
- alert = QtGui.QMessageBox.warning(self, 'Aviso', "Por favor, llena el campo de Usuario")
- elif self.login_widget.passwordEdit.text() == '':
- alert = QtGui.QMessageBox.warning(self, 'Aviso', "Por favor, llena el campo de Password")
- else:
- if True: #self.sendData("0", self.login_widget.usuarioEdit.text(), None, self.login_widget.passwordEdit.text()) == '1':
- logged_in_widget = LoggedWidget(self)
- self.central_widget.addWidget(logged_in_widget)
- self.central_widget.setCurrentWidget(logged_in_widget)
- self.user = self.login_widget.usuarioEdit.text()
- self.statusBar().showMessage('Hola '+ self.user + '!')
- else:
- alert = QtGui.QMessageBox.warning(self, 'Aviso', "Usuario o clave incorrecta")
- def retiro(self):
- """ Accede a la pantalla de retiro para realizar un retiro de efectivo """
- #Comunicacion
- self.central_widget.addWidget(self.retiro_widget)
- self.central_widget.setCurrentWidget(self.retiro_widget)
- self.statusBar().showMessage('Introduce la cantidad a retirar.')
- def saldo(self):
- """ Accede a la pantalla de consulta de saldo para revisar los fondos en la cuenta """
- #Comunicacion
- self.central_widget.addWidget(self.saldo_widget)
- self.central_widget.setCurrentWidget(self.saldo_widget)
- self.statusBar().showMessage('Revisa tu saldo disponible.')
- def withdraw(self):
- """ Retira fondos de la cuenta """
- #Valida
- if self.retiro_widget.retiroEdit.text() == '':
- alert = QtGui.QMessageBox.warning(self, 'Aviso', "Por favor, llena el campo con el monto a retirar")
- elif int(self.retiro_widget.retiroEdit.text()) == 0:
- alert = QtGui.QMessageBox.warning(self, 'Aviso', "Por favor, introduce una cantidad positiva no mayor a 5000")
- self.monto = int(self.retiro_widget.retiroEdit.text())
- self.saldo_user = 4000 #self.sendData("1", self.user) ESTO LO TENGO QUE CAMBIAR VITEH
- if self.monto > int(self.saldo_user):
- alert = QtGui.QMessageBox.warning(self, 'Aviso', "Usted tiene menos fondos de los que intenta retirar")
- else:
- #self.saldo_user = self.sendData("2", self.user, self.monto)
- confirm_widget = ConfirmWidget(self)
- self.central_widget.addWidget(confirm_widget)
- self.central_widget.setCurrentWidget(confirm_widget)
- self.statusBar().showMessage('Retiro hecho satisfactoriamente.')
- self.retiro_widget.retiroEdit.setText('')
- def logout(self):
- """ Cierra sesion """
- #Comunicacion
- self.central_widget.setCurrentWidget(self.login_widget)
- self.statusBar().showMessage('Gracias por usar PyTransactio!')
- self.login_widget.usuarioEdit.setText('')
- self.login_widget.passwordEdit.setText('')
- def closeEvent(self, event):
- reply = QtGui.QMessageBox.question(self, 'Salir?', "Seguro que desea salir?", QtGui.QMessageBox.Yes |
- QtGui.QMessageBox.No, QtGui.QMessageBox.No)
- if reply == QtGui.QMessageBox.Yes:
- #Cierra sesion
- event.accept()
- else:
- event.ignore()
- class LoginWidget(QtGui.QWidget):
- def __init__(self, parent=None):
- super(LoginWidget, self).__init__(parent)
- self.initUI()
- def initUI(self):
- self.logo = QtGui.QPixmap('icon.png') #Logo
- self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
- self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
- self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
- self.title.setFont(QtGui.QFont('SansSerif', 48))
- self.usuario = QtGui.QLabel('Usuario') #Label del User
- self.password = QtGui.QLabel('Password') #Label del pass
- self.usuarioEdit = QtGui.QLineEdit() #Line Edit del username
- self.usuarioEdit.setStatusTip('Introduce tu nombre de usuario.')
- self.passwordEdit = QtGui.QLineEdit() #Line Edit del password
- self.passwordEdit.setStatusTip('Introduce tu password.')
- self.passwordEdit.setEchoMode(QtGui.QLineEdit.Password) #Hacer que sea para password y ver **** en lugar de caracteres
- self.loginButton = QtGui.QPushButton('Entrar') #Crea boton de login
- self.loginButton.clicked.connect(self.parent().login) #Metodo llamado al presionar el Login
- self.loginButton.setStatusTip('Ingresa con tus datos.') #Mostrar tip en la barra de estado
- self.grid = QtGui.QGridLayout() #Layout en Grid
- self.grid.setSpacing(10) #Espacio entre widgets del Layout
- self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
- self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
- self.grid.addWidget(self.usuario, 2, 0) #Agrega el texto 'Usuario' al grid
- self.grid.addWidget(self.usuarioEdit, 2, 1, 1, 5) #Agrega el textfield para el usuario
- self.grid.addWidget(self.password, 3, 0) #Agrega el texto 'Password' al grid
- self.grid.addWidget(self.passwordEdit, 3, 1, 1, 5) #Agrega el textfield para el pass
- self.grid.addWidget(self.loginButton, 3, 6) #Agrega el boton de login al grd
- self.setLayout(self.grid) #Settea el Layout en Grid
- #self.setGeometry(300, 300, 450, 400) #Widget Size
- self.show()
- class LoggedWidget(QtGui.QWidget):
- def __init__(self, parent=None):
- super(LoggedWidget, self).__init__(parent)
- self.initUI()
- def initUI(self):
- self.logo = QtGui.QPixmap('icon.png') #Logo
- self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
- self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
- self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
- self.title.setFont(QtGui.QFont('SansSerif', 48))
- self.retiro = QtGui.QPushButton('Retiro')
- self.retiro.setStatusTip('Realiza un retiro en tu cuenta.')
- self.retiro.clicked.connect(self.parent().retiro)
- self.saldo = QtGui.QPushButton('Saldo')
- self.saldo.setStatusTip('Revisa los fondos disponibles en tu cuenta.')
- self.saldo.clicked.connect(self.parent().saldo)
- self.salir = QtGui.QPushButton('Salir')
- self.salir.setStatusTip('Salir del sistema PyTransactio.')
- self.salir.clicked.connect(self.parent().logout)
- self.grid = QtGui.QGridLayout()
- self.grid.setSpacing(10)
- self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
- self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
- self.grid.addWidget(self.saldo, 2, 3)
- self.grid.addWidget(self.retiro, 3, 3)
- self.grid.addWidget(self.salir, 4, 3)
- self.parent().user = self.parent().login_widget.usuarioEdit.text()
- #self.parent().saldo = #self.sendData("1", self.parent().user) ESTO LO TENGO QUE QUITAR VITEH
- self.setLayout(self.grid)
- self.show()
- class RetiroWidget(QtGui.QWidget):
- def __init__(self, parent=None):
- super(RetiroWidget, self).__init__(parent)
- self.initUI()
- def initUI(self):
- self.logo = QtGui.QPixmap('icon.png') #Logo
- self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
- self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
- self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
- self.title.setFont(QtGui.QFont('SansSerif', 48))
- self.retiro = QtGui.QLabel('Retirar')
- self.retiroEdit = QtGui.QLineEdit()
- self.valida = QtGui.QIntValidator(0, 5000)
- self.retiroEdit.setValidator(self.valida)
- self.retiroEdit.setStatusTip('Introduce la cantidad a retirar.')
- self.retirar = QtGui.QPushButton('Confirmar')
- self.retirar.setStatusTip('Retirar la cantidad deseada.')
- self.retirar.clicked.connect(self.parent().withdraw)
- self.volver = QtGui.QPushButton('Volver')
- self.volver.setStatusTip('Regresar a la pantalla de inicio.')
- self.volver.clicked.connect(self.parent().login)
- self.grid = QtGui.QGridLayout()
- self.grid.setSpacing(10)
- self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
- self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
- self.grid.addWidget(self.retiro, 2, 3)
- self.grid.addWidget(self.retiroEdit, 2, 4)
- self.grid.addWidget(self.retirar, 2, 5)
- self.grid.addWidget(self.volver, 3, 1)
- self.setLayout(self.grid)
- self.show()
- class SaldoWidget(QtGui.QWidget):
- def __init__(self, parent=None):
- super(SaldoWidget, self).__init__(parent)
- self.initUI()
- def initUI(self):
- self.logo = QtGui.QPixmap('icon.png') #Logo
- self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
- self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
- self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
- self.title.setFont(QtGui.QFont('SansSerif', 48))
- self.saldo_user = 4000 #self.sendData("1", self.user) ESTO LO TENGO QUE CAMBIAR
- self.saldo = QtGui.QLabel(self)
- self.saldo.setText('Tu saldo es de $' + str(self.saldo_user))
- self.saldo.setFont(QtGui.QFont('SansSerif', 16))
- #Indicar el saldo del vato
- self.volver = QtGui.QPushButton('Volver')
- self.volver.setStatusTip('Regresar a la pantalla de inicio.')
- self.volver.clicked.connect(self.parent().login)
- self.grid = QtGui.QGridLayout()
- self.grid.setSpacing(10)
- self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
- self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
- self.grid.addWidget(self.saldo, 2, 2, 1, 1)
- self.grid.addWidget(self.volver, 3, 3)
- self.setLayout(self.grid)
- self.show()
- class ConfirmWidget(QtGui.QWidget):
- def __init__(self, parent=None):
- super(ConfirmWidget, self).__init__(parent)
- self.initUI()
- def initUI(self):
- self.logo = QtGui.QPixmap('icon.png') #Logo
- self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
- self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
- self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
- self.title.setFont(QtGui.QFont('SansSerif', 48))
- self.retiro = QtGui.QLabel(self)
- self.retiro.setText('Retiraste satsfactoriamente $' + str(self.parent().retiro_widget.retiroEdit.text()))
- self.retiro.setFont(QtGui.QFont('SansSerif', 16))
- self.saldo = QtGui.QLabel(self)
- self.saldo.setText('Tu saldo actual es de $' + str(self.parent().saldo_user))
- self.saldo.setFont(QtGui.QFont('SansSerif', 14))
- #Indicar el saldo restante del vato
- self.volver = QtGui.QPushButton('Volver')
- self.volver.setStatusTip('Regresar a la pantalla de inicio.')
- self.volver.clicked.connect(self.parent().login)
- self.grid = QtGui.QGridLayout()
- self.grid.setSpacing(10)
- self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
- self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
- self.grid.addWidget(self.retiro, 2, 1, 1, 4)
- self.grid.addWidget(self.saldo, 3, 1, 1, 4)
- self.grid.addWidget(self.volver, 3, 4)
- self.setLayout(self.grid)
- self.show()
- def main():
- app = QtGui.QApplication(sys.argv)
- ex = App()
- sys.exit(app.exec_())
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement