comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] "Dos ventanas en solo un archivo"

  • 3 Respuestas
  • 2033 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fortil

  • *
  • Underc0der
  • Mensajes: 175
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« en: Abril 15, 2013, 04:53:04 pm »
Hola a todos, pues no supe como llamarle a eso pues en este tema de las clases me quedo corto y comienzo a patinar.


Problema:
He realizado dos ventanas en pyqt4, la cual las dos tienen la estructura general de cualquier ventana de pyqt cuando se pasa de .ui a .py
- la idea es que la primera ventana dependiendo de algo llame a la otra ventana pasandole el valor de una variable que utilizará esta segunda ventana, el cual este valor se generó en la primera y no puede volver a ser pedido.
- la idea es que al cerrar la segunda ventana esta mande otra variable a la primera y cierre las dos ventanas.
Nota: en realidad mi problema es que no sé como usar las clases en este caso y como importar y/o utilizar este archivo de la manera import y pasarle el valor de una variable

mi solución había sido utilizar el os.popen("python archivo.py valor_variable") y ya con eso tenía solucionado hasta el momento, pero luego surgieron muchos problemas mas.

ahora mi idea es utilizarlos como import archivo, o meterlos en el mismo archivo y que queden diferentes clases, pero no sé como llamarlos pasandoles un valor en un momento determinado después de ejecutarse el primer programa.


Esto es la estructura general de las ventanas.

Código: Python
  1. from PyQt4 import QtCore, QtGui
  2. import sys, os
  3. import MySQLdb as msdb
  4.  
  5. try:
  6.         _fromUtf8 = QtCore.QString.fromUtf8
  7. except AttributeError:
  8.         _fromUtf8 = lambda s: s
  9.  
  10. class Ui_MainWindow(QtGui.QMainWindow):
  11.         def __init__(self,parent=None):
  12.                 QtGui.QMainWindow.__init__(self)#,None,QtCore.Qt.WindowStaysOnTopHint)
  13.                 self.setupUi(self)
  14.                
  15.         def setupUi(self, MainWindow):
  16.                 ####............................
  17.  
  18.         def retranslateUi(self, MainWindow):
  19.                 #####....................
  20.                
  21.         ####codigo del programa ...................
  22.  
  23. def main():
  24.         # Nuevamente, esto es estandar, sera igual en cada
  25.         # aplicacion que escribas
  26.         app = QtGui.QApplication(sys.argv)
  27.         #~ if len(sys.argv) == 2:           //estas son para las que reciben el parametro os.popen
  28.                 #~ codigo = int(sys.argv[1])
  29.         window=Ui_MainWindow()
  30.         window.show()
  31.         # Es exec_ porque exec es una palabra reservada en Python
  32.         sys.exit(app.exec_())
  33.        
  34. main()
  35.  
  36.  

así son en general las ventanas, gracias
« Última modificación: Septiembre 07, 2014, 01:15:39 pm por Expermicid »

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #1 en: Abril 15, 2013, 05:20:44 pm »
Hola brother,

Nunca he trabajado con más de una ventana en QT así que si puedes colocar todo el código o la parte donde llamas a la segunda ventana te podría ayuda un poco mejor.


Saludos!






No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Abril 22, 2013, 03:14:22 am »
En realidad es sencillo. Si creas un archivo por cada ventana (cosa que recomiendo), lo que tenes que hacer es importar la segunda ventana e instanciarla, pasandole como parametro la variable que te interesa.
Ej.:
Código: Python
  1. import sys
  2. from PyQt4 import QtCore, QtGui
  3. from Ui_VentanaDos import Ui_VentanaDos
  4.  
  5. class VentanaUno(QtGui.QMainWindow):
  6.     def __init__(self):
  7.         QtGui.QMainWindow.__init__(self)
  8.  
  9.         miVariable = 'Esta variable sera utilizada por Ventana Dos'
  10.  
  11.         self.miVentanaDos= Ui_MainWindow()
  12.         self.miVentanaDos.initUi(miVariable)
  13.  
  14.         self.initUi()
  15.  
  16.     def initUi(self):
  17.         ...
  18.  
  19. def main():
  20.     app = QtGui.QApplication(sys.argv)
  21.     miVentanaUno = VentanaUno()
  22.     sys.exit(app.exec_())
  23.  
  24. if __name__ == '__main__':
  25.     main()
  26.  

Es un ejemplo simple, en el que la segunda ventana se crea automaticamente, pero la idea es mostrar como pasar la variable.

Esta es una buena alternativa, aunque mejor es que pases como parametro 'self' en vez de la variable: en este caso solo necesitas la variable, pero en algun otro programa tal vez precises modificar varios atributos u obtener cierta informacion de la ventana principal y esta es una forma comoda de hacerlo.

Espero que sea esto lo que buscabas. De lo contrario, subi los codigos y vemos mejor el caso.

Saludos!
WhiZ


Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« Respuesta #3 en: Abril 22, 2013, 01:39:03 pm »
Según mi experiencia en PyQT4, solo debes hacer una instancia a la otra clase... Luego solo utilizar instancia.function()
No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 7696
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 2235
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 1644
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 3012
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Qué se puede y no se puede hacer

Iniciado por phineas13

Respuestas: 14
Vistas: 3801
Último mensaje Diciembre 11, 2013, 10:46:33 am
por CrazyKade