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!