Faire exucuter un fichier.py python à partir d'un menu principal

Fermé
Foutha02 Messages postés 1 Date d'inscription mercredi 15 avril 2020 Statut Membre Dernière intervention 15 avril 2020 - Modifié le 15 avril 2020 à 16:57
tarneo23 Messages postés 58 Date d'inscription mercredi 6 mai 2020 Statut Membre Dernière intervention 24 mai 2020 - 21 mai 2020 à 15:08
Bonjour,
j'ai créer un programme principal main qui contient un menu principal et je n'arrive pas lancer les autres modules à partir du menu principal, sachant que j'ai utiliser les modules de PYQT5
prière de me assister pour régler ce pbm.




Configuration: Windows / Chrome 81.0.4044.92

######### Main Menu###########
import sys
from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction

#import Fiche_Client
#from fubonacci import fubonnaci_Suite

class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initWind()

    def initWind(self):
        self.setWindowIcon(QtGui.QIcon("tux.png"))
        self.setWindowTitle("Logiciel Suiv des Crédits")
        self.setGeometry(100,100,1000,600)
        self.menuPrincipal()
        self.show()

######## Creation d'un Menu Principal du Logiciel
    def menuPrincipal(self):
        mainMenu = self.menuBar()
        fichier = mainMenu.addMenu("Fichier")
        trt = mainMenu.addMenu("Traitement des Credits")
        ed = mainMenu.addMenu("Edition")
        out = mainMenu.addMenu("Outils")
        ###########################
        cli = QAction("Client", self)
        art = QAction("Articles", self)
        quit = QAction("Quitter", self)
        fichier.addAction(cli)
        fichier.addAction(art)
        fichier.addAction(quit)
        quit.triggered.connect(self.close)
        cli.triggered.connect(self.Client)
        ##art.triggered.connect(fubonnaci_Suite)
        #############################
        vent = QAction("Ventes", self)
        vers = QAction("Versements ", self)
        trt.addAction(vent)
        trt.addAction(vers)
        #############################
        regSuiv = QAction("Registre Suivi Crédit", self)
        factimpay = QAction("Etat des Factures Impayées", self)
        soldGlob = QAction("Etat Global Solde Client", self)
        ed.addAction(regSuiv)
        ed.addAction(factimpay)
        ed.addAction(soldGlob)
        ##############################
        ent = QAction("Mise a jour Entete", self)
        pw = QAction("Changer le Mot de Passe", self)
        out.addAction(ent)
        out.addAction(pw)
        ################################

    def Client(self):
      #???????? comment faire ?





app = QApplication(sys.argv)
wind = Window()
sys.exit(app.exec_())
#################################################################

######### Module Fichier Client 
from PyQt5.QtWidgets import QWidget, QGroupBox, QHBoxLayout, QApplication, QLabel, QLineEdit, QGridLayout, QTableWidget, \
    QTableWidgetItem, QVBoxLayout, QPushButton,QMessageBox
from PyQt5.QtGui import QFont
import sqlite3
import sys


class Win_Client(QWidget):
    def __init__(self):
        super().__init__()
        self.InitWind()
        self.show()

    def InitWind(self):
        self.setGeometry(400, 300, 800, 600)
        self.setWindowTitle("Fichier Client")
        self.fich_Cli()

    def fich_Cli(self):
        glob = QGroupBox()
        group1 = QGroupBox("Fichier Client :")
        self.group2 = QGroupBox("Table Client :")
        vbox = QVBoxLayout()
        vbox.addWidget(group1)
        vbox.addWidget(self.group2)
        glob.setLayout(vbox)

        grid = QGridLayout()
        lab1 = QLabel("Code Client", self)
        lab2 = QLabel("Raison Social :", self)
        lab3 = QLabel("Adresse : ", self)
        self.cod = QLineEdit(self)
        self.rais = QLineEdit(self)
        self.rais.setFont(QFont('Arial', 12))
        self.cod.setEnabled(False)
        self.adres = QLineEdit(self)
        but1 = QPushButton("Valider", self)
        self.but2 = QPushButton('Suprimer ', self)
        but3 = QPushButton('Fermer', self)
        grid.addWidget(lab1, 0, 0)
        grid.addWidget(lab2, 1, 0)
        grid.addWidget(lab3, 2, 0)
        grid.addWidget(self.cod, 0, 1)
        grid.addWidget(self.rais, 1, 1)
        grid.addWidget(self.adres, 2, 1)
        grid.addWidget(but1, 0, 2)
        grid.addWidget(self.but2, 1, 2)
        grid.addWidget(but3, 2, 2)
        group1.setLayout(grid)

        self.table = QTableWidget()
        self.table.setColumnCount(4)
        self.table.setHorizontalHeaderLabels(("Code,Rais_Soc,Adresse,Solde").split(','))
        self.table.cellClicked.connect(self.clic)


        vbox = QVBoxLayout()
        vbox.addWidget(self.table)
        self.group2.setLayout(vbox)
        hbox = QHBoxLayout()
        hbox.addWidget(glob)
        self.setLayout(hbox)
        self.attrib_Cod()
        self.Charger_La_Base()
        but1.clicked.connect(self.Valider)
        but3.clicked.connect(self.close)
        self.but2.clicked.connect(self.Supprimer)
        self.but2.setEnabled(False)


    def Charger_La_Base(self):
        connection = sqlite3.connect("credit.db")
        cursor = connection.cursor()
        req = cursor.execute("SELECT * FROM client ORDER BY code")
        self.table.setRowCount(0)
        try:
            for row_number, row_data in enumerate(req):
                self.table.insertRow(row_number)
                for column_number, data in enumerate(row_data):
                    self.table.setItem(row_number, column_number, QTableWidgetItem(str(data)))
            self.attrib_Cod()

        except  Exception as e:
            print("[ERREUR :]", e)
            connection.rollback()

        finally:
            connection.close()

    def attrib_Cod(self):
        connection = sqlite3.connect("credit.db")
        cursor = connection.cursor()
        req = cursor.execute("SELECT * FROM client ORDER BY code")
        row = req.fetchall()
        reccount = len(row)
        if reccount > 0:
            req = cursor.execute("SELECT * FROM client ORDER BY code")
            row = req.fetchone()
            while (row):
                cod = row[0]
                row = req.fetchone()
            cod = int(cod[1:4])
            cod += 1
            l = len(str(cod))
            s = ''
            if l < 3:
                for i in range(3 - l):
                    s = s + '0'
            cod1 = 'C' + s + str(cod)
        else:
            cod1 = 'C001'
        self.cod.setText(cod1)
        connection.close()

    def Valider(self):
        message= QMessageBox.question(self,"Nouveau Client","Est Vous Sur ?",QMessageBox.Yes|QMessageBox.No)
        if message==QMessageBox.Yes :
            connection = sqlite3.connect("credit.db")
            cursor = connection.cursor()
            try:

                nouvClient = (self.cod.text(), self.rais.text().upper(), self.adres.text().capitalize(), 0)
                cursor.execute("INSERT INTO Client VALUES(?,?,?,?)", nouvClient)
                connection.commit()
                print("Nouveau Client Ajouté !")
            except Exception as e:
                print("[ERREUR :]", e)
                connection.rollback()
            finally:
                connection.close()
                self.Charger_La_Base()
                self.attrib_Cod()
                self.rais.clear()
                self.adres.clear()
        else :
            self.rais.clear()
            self.adres.clear()

    def Supprimer(self):
        message = QMessageBox.question(self, "Suppression Client", "Est Vous Sur ?", QMessageBox.Yes | QMessageBox.No)
        if message == QMessageBox.Yes:
            connection = sqlite3.connect("credit.db")
            cursor = connection.cursor()
            try:
                code_cli = self.table.item(self.table.currentRow(), 0).text()
                cursor.execute("DELETE FROM  Client WHERE code = ?" , (code_cli,))
                connection.commit()
                print("Client Suprimé !")
            except Exception as e:
                print("[ERREUR :]", e)
                connection.rollback()
            finally:
                connection.close()
                self.Charger_La_Base()
                self.attrib_Cod()
                self.but2.setEnabled(False)

    def clic(self):
        self.but2.setEnabled(True)
        print(self.table.item(self.table.currentRow(), 0).text())


#print(self.table.item(self.table.currentRow(), 0).text())
app = QApplication(sys.argv)
win = Win_Client()
sys.exit(app.exec_())

############################

1 réponse

tarneo23 Messages postés 58 Date d'inscription mercredi 6 mai 2020 Statut Membre Dernière intervention 24 mai 2020 9
21 mai 2020 à 15:08
tu veux donc run le programme depuis le menu windows? Rien de plus simple: Cliquer-glisser du programme dans le système de fichier puis dans la barre des tâches.
0