Ir para conteúdo
Fórum Script Brasil

cleber.nandi

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que cleber.nandi postou

  1. Estou fazendo um sistema com Python e PyQT5. Já criei os menus e agora estou aplicando as funções necessárias de cada item. Quero trabalhar com telas MDI e estou tendo dificuldades com isso. Estou trabalhando com estrutura de pastas separadas para cada módulo e suas classes. Quando eu crio meu script para criar a tela MDI tudo em um único script, sem separar as classes, funciona, cria a tela certinho, mas quando tendo fazer isso para o meu script principal não está funcionando, acredito que por causa das dependências, não sei. Alguém poderia me ajudar a ajustar meu código para funcionar perfeitamente a criação da tela de "Criar SCD"? "main" # coding: utf-8 import sys import lib.mainMenu as Menu import lib.mainToolBar as MainToolbar from lib.config import path_file from PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox, QMdiArea from PyQt5.QtCore import QSize from PyQt5 import QtGui __version__ = "1.0.0" image_root = path_file() window_icon = image_root + r"\public\icons\etl.png" class App(QMainWindow): def __init__(self): super().__init__() self.setMinimumSize(QSize(1200, 800)) self.setWindowIcon(QtGui.QIcon(window_icon)) self.title = 'System Converter Database - Version: ' self.setWindowTitle(self.title + __version__) self.move(app.desktop().screen().rect().center() - self.rect().center()) # Criando o Widget central self.mdi_area = QMdiArea() self.setCentralWidget(self.mdi_area) Menu.create_main_menu(self) MainToolbar.create_toolbar(self) self.statusBar().showMessage('Ready') self.show() def closeEvent(self, event): quit_msg = "Deseja mesmo sair do sistema?" reply = QMessageBox.question(self, "Saindo do sistema", quit_msg, QMessageBox.Yes, QMessageBox.No) if reply == QMessageBox.Yes: event.accept() else: event.ignore() if __name__ == '__main__': app = QApplication(sys.argv) ex = App() sys.exit(app.exec_()) "Modulo menus" # coding: utf-8 from lib.config import path_file from PyQt5.QtWidgets import QAction, QMessageBox, qApp, QWidget from PyQt5.QtGui import QIcon from PyQt5 import QtGui from PyQt5.QtCore import QSize image_root = path_file() class MdiChild(QWidget): def __init__(self): super().__init__() def create_main_menu(handle): # Action do menu Criar SCD criar_scd_icon = image_root + r"\public\icons\Criar_scd.png" action_criar_scd = QAction(QIcon(criar_scd_icon), "C&riar SCD", handle) action_criar_scd.setShortcut("Ctrl+Shift+R") action_criar_scd.triggered.connect(criar_scd) # Action do menu Localizar SCD localizar_scd_icon = image_root + r"\public\icons\localizar.png" action_localizar_scd = QAction(QIcon(localizar_scd_icon), "&Localizar SCD", handle) action_localizar_scd.setShortcut("Ctrl+Shift+L") action_localizar_scd.triggered.connect(localizar_scd) # Action do menu Conversor/passo a passo/copiar copiar_icon = image_root + r"\public\icons\copiar.png" action_copiar = QAction(QIcon(copiar_icon), "&Copiar", handle) action_copiar.setShortcut("Ctrl+Shift+C") action_copiar.triggered.connect(copiar) # Action do menu Conversor/passo a passo/extrair extrair_icon = image_root + r"\public\icons\extrair.png" action_extrair = QAction(QIcon(extrair_icon), "&Extrair", handle) action_extrair.setShortcut("Ctrl+Shift+E") action_extrair.triggered.connect(extrair) # Action do menu Conversor/passo a passo/Preparar preparar_icon = image_root + r"\public\icons\preparar.png" action_preparar = QAction(QIcon(preparar_icon), "&Preparar", handle) action_preparar.setShortcut("Ctrl+Shift+P") action_preparar.triggered.connect(preparar) # Action do menu Conversor/passo a passo/converter converter_icon = image_root + r"\public\icons\converter.png" action_converter = QAction(QIcon(converter_icon), "Co&nverter", handle) action_converter.setShortcut("Ctrl+Shift+N") action_converter.triggered.connect(converter) # Action do menu Conversor/automático/iniciar automatico_iniciar_icon = image_root + r"\public\icons\automatico.png" action_automatico_iniciar = QAction(QIcon(automatico_iniciar_icon), "&Iniciar", handle) action_automatico_iniciar.setShortcut("Ctrl+Shift+I") action_automatico_iniciar.triggered.connect(automatico_iniciar) # Action do menu Verificador/iniciar verificador_iniciar_icon = image_root + r"\public\icons\automatico.png" action_verificador_iniciar = QAction(QIcon(verificador_iniciar_icon), "Veri&ficador", handle) action_verificador_iniciar.setShortcut("Ctrl+Shift+F") action_verificador_iniciar.triggered.connect(verificador_iniciar) # Action do menu sair sair_icon = image_root + r"\public\icons\exit.png" action_sair = QAction(QIcon(sair_icon), "&Sair", handle) action_sair.setShortcut("Ctrl+Shift+S") action_sair.triggered.connect(sair) # Criando barra de menu principal main_menu = handle.menuBar() menu_scd = main_menu.addMenu("SC&D") menu_converter = main_menu.addMenu("C&onversor") menu_converter_automatico = menu_converter.addMenu("&Automático") menu_converter_passo = menu_converter.addMenu("&Passo a passo") menu_verificador = main_menu.addMenu("&Verificador") menu_sair = main_menu.addMenu("&Sair") # Criando os sub-menus menu_scd.addAction(action_criar_scd) menu_scd.addAction(action_localizar_scd) menu_sair.addAction(action_sair) menu_converter_passo.addAction(action_copiar) menu_converter_passo.addAction(action_extrair) menu_converter_passo.addAction(action_preparar) menu_converter_passo.addAction(action_converter) menu_converter_automatico.addAction(action_automatico_iniciar) menu_verificador.addAction(action_verificador_iniciar) def create_mdi_child(parent=None): if parent is not None: child = MdiChild() parent.mdi_area.addSubWindow(child) return child def criar_scd(parent=None): tela_scd = parent.create_mdi_child() tela_scd.setWindowTitle("Criar SCD") tela_scd.setMinimumSize(QSize(1200, 800)) tela_scd.show() print("Criar SCD") def localizar_scd(): print("Localizar SCD") def copiar(): pass def extrair(): pass def preparar(): pass def converter(): pass def automatico_iniciar(): pass def verificador_iniciar(): pass def sair(): box_quit = QMessageBox() box_quit.setWindowIcon(QtGui.QIcon(image_root + r"\public\icons\etl.png")) box_quit.setIcon(QMessageBox.Question) box_quit.setWindowTitle("Saindo do sistema") box_quit.setText("Deseja mesmo sair do sistema?") box_quit.setStandardButtons(QMessageBox.Yes | QMessageBox.No) box_quit.setDefaultButton(QMessageBox.No) reply = box_quit.exec_() if reply == QMessageBox.Yes: qApp.quit() Quando clico no menu "Criar SCD" o sistema não cria a tela MDI que deveria ser criada e fecha o sistema. Preciso de ajuda para fazer aparecer essa tela MDI, por favor. Se eu faço desse jeito abaixo, dá certo, ele cria a janela MDI com sucesso, mas não sei como fazer para adaptar isso a minha realidade. class MainWindow(QtWidgets.QMainWindow): def __init__(self, parent=None): QtWidgets.QMainWindow.__init__(self, parent) self.centralwidget = QtWidgets.QWidget(self) self.setCentralWidget(self.centralwidget) self.centralwidget.setLayout(QtWidgets.QVBoxLayout(self.centralwidget)) self.mdiArea = QtWidgets.QMdiArea(self.centralwidget) self.centralwidget.layout().addWidget(self.mdiArea) subWindow = QtWidgets.QMdiSubWindow(self) widget = QtWidgets.QWidget() widget.setLayout(QtWidgets.QVBoxLayout()) btn = QtWidgets.QPushButton("close", widget) widget.layout().addWidget(btn) btn.clicked.connect(subWindow.close) subWindow.setWidget(widget) subWindow.setObjectName("New_Window") subWindow.setWindowTitle("New SubWindow") self.mdiArea.addSubWindow(subWindow) if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) w = MainWindow() w.show() sys.exit(app.exec_()) Desde já agradeço pela ajuda.
×
×
  • Criar Novo...