Chamada de dois Formulários por código Python

1. Chamada de dois Formulários por código Python

Wladimir Caetani
wladimir58

(usa Linux Mint)

Enviado em 05/08/2016 - 16:49h

Estou com um problema aqui:

Estou usado o QT4 DESIGNER para desenhar dois formulários e, depois utilizando um código em python, através do Formulário 1 chamar o formulário 2.

Quando utilizo o comando abaixo, funciona perfeitamente, mas esse comando só serve para chamar através do Shell do Linux, o que faz com que meu programa, não seja portável para Mac Os X ou para Windows. Segue abaixo comando:

from subprocess import *


executar = call('python Bugio2.py',shell = True)


Quero chamar o segundo FORM em MODAL, tal qual se faz em linguagens como o GAMBAS, VISUAL BASIC, LAZARUS ou DELPHI.
Assim evito erros que um usuário distraído poderia causar ao usar o meu programa. Abaixo anexos dos dois FORMs feitos em QT4 DESIGNER e o código do programa principal, o qual chama o segundo form.

O programa se chama Bugio.py e tem os seguintes forms:

* Bugio.ui ---> Menu principal
* Bugio2.ui -> Segundo form

Segue o código do primeiro programa, o qual chama o segundo.

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

# Form implementation generated from reading ui file 'Bugio.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui
from subprocess import *


try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

class Ui_Bugio(object):
def setupUi(self, Bugio):
Bugio.setObjectName(_fromUtf8("Bugio"))
Bugio.resize(800, 600)
self.centralwidget = QtGui.QWidget(Bugio)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
Bugio.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(Bugio)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 28))
self.menubar.setObjectName(_fromUtf8("menubar"))
self.menuArquivo = QtGui.QMenu(self.menubar)
self.menuArquivo.setObjectName(_fromUtf8("menuArquivo"))
self.menuCadastros = QtGui.QMenu(self.menuArquivo)
self.menuCadastros.setObjectName(_fromUtf8("menuCadastros"))
self.menuAjuda = QtGui.QMenu(self.menubar)
self.menuAjuda.setObjectName(_fromUtf8("menuAjuda"))
Bugio.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(Bugio)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
Bugio.setStatusBar(self.statusbar)
self.actionEditar = QtGui.QAction(Bugio)
self.actionEditar.setObjectName(_fromUtf8("actionEditar"))
self.actionExcluir = QtGui.QAction(Bugio)
self.actionExcluir.setObjectName(_fromUtf8("actionExcluir"))
self.actionSair = QtGui.QAction(Bugio)
self.actionSair.setObjectName(_fromUtf8("actionSair"))
self.Cad_Contatos = QtGui.QAction(Bugio)
self.Cad_Contatos.setObjectName(_fromUtf8("Cad_Contatos"))
self.Cad_Produtos = QtGui.QAction(Bugio)
self.Cad_Produtos.setObjectName(_fromUtf8("Cad_Produtos"))
self.Cad_Fornecedores = QtGui.QAction(Bugio)
self.Cad_Fornecedores.setObjectName(_fromUtf8("Cad_Fornecedores"))
self.Mn_Sobre = QtGui.QAction(Bugio)
self.Mn_Sobre.setObjectName(_fromUtf8("Mn_Sobre"))
self.menuCadastros.addAction(self.Cad_Contatos)
self.menuCadastros.addAction(self.Cad_Produtos)
self.menuCadastros.addAction(self.Cad_Fornecedores)
self.menuArquivo.addAction(self.menuCadastros.menuAction())
self.menuArquivo.addAction(self.actionEditar)
self.menuArquivo.addAction(self.actionExcluir)
self.menuArquivo.addSeparator()
self.menuArquivo.addAction(self.actionSair)
self.menuAjuda.addAction(self.Mn_Sobre)
self.menubar.addAction(self.menuArquivo.menuAction())
self.menubar.addAction(self.menuAjuda.menuAction())

self.retranslateUi(Bugio)
# Chamada da função pelo menu --> self.Função
QtCore.QObject.connect(self.Cad_Contatos, QtCore.SIGNAL(_fromUtf8("activated()")), self.Cadastro)
QtCore.QMetaObject.connectSlotsByName(Bugio)

def retranslateUi(self, Bugio):
Bugio.setWindowTitle(_translate("Bugio", "BUGIO 1.0.0", None))
self.menuArquivo.setTitle(_translate("Bugio", "Arquivo", None))
self.menuCadastros.setTitle(_translate("Bugio", "Cadastros", None))
self.menuAjuda.setTitle(_translate("Bugio", "Ajuda", None))
self.actionEditar.setText(_translate("Bugio", "Editar", None))
self.actionExcluir.setText(_translate("Bugio", "Excluir", None))
self.actionSair.setText(_translate("Bugio", "Sair", None))
self.Cad_Contatos.setText(_translate("Bugio", "Contatos", None))
self.Cad_Produtos.setText(_translate("Bugio", "Produtos", None))
self.Cad_Fornecedores.setText(_translate("Bugio", "Fornecedores", None))
self.Mn_Sobre.setText(_translate("Bugio", "Sobre", None))

def Cadastro(self):
# AQUI É CHAMADO O SEGUNDO PRROGRAMA
executar = call('python Bugio2.py',shell = True)
Bugio2.show()
return




if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Bugio = QtGui.QMainWindow()
ui = Ui_Bugio()
ui.setupUi(Bugio)
Bugio.show()
sys.exit(app.exec_())

OBRIGADO!


  


2. Obs

Wladimir Caetani
wladimir58

(usa Linux Mint)

Enviado em 05/08/2016 - 16:55h

Não consegui colocar em anexo aqui os dois forms da aplicação.

me desculpem!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts