Ir para conteúdo
Fórum Script Brasil
  • 0

Usar dois formularios Qt4 designer


Wladimir Cebolinha

Pergunta

Boa tarde.

 

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()

        print('Sera que deu certo?')

        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!

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...