1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
# -*- coding: utf-8 -*-
from tkinter import*
import tkinter as tk
from main_sql import*# syntaxe pour appeller un autre fichier py + fonction
from tkinter import font
from PIL import Image, ImageTk # module image
classHoverButton(tk.Button):
def__init__(self, master, **kw):
tk.Button.__init__(self,master=master,**kw)
self.defaultBackground =self["background"]
self.bind("<Enter>", self.on_enter)
self.bind("<Leave>", self.on_leave)
defon_enter(self, e):
self["background"] =self["activebackground"]
defon_leave(self, e):
self["background"] =self.defaultBackground
defcmb_nomsauteur():
conn = sqlite3.connect("mnesis.db") # Spécifier le nom de votre base de données dans le même répertoire.
noms = [] # Création d'une liste afin de récupérer les noms des auteurs
for row in conn.execute('select auteur_auteur from tb_auteur;'): # Boucle afin de lire la database
data = row[0];
noms.append(data) #Valeur de la variable contenant le contenu de la requête
listenomsauteurSelect = StringVar()
result = (noms)
listenomsauteur = Combobox(fenetre_pce, textvariable= listenomsauteurSelect, values= result, state='readonly')
defrunauteur():
global boutonEnregistrer
toplevelAuteur = Toplevel() #== Contructeur Toplevel ==
toplevelAuteur.title(" Bienvenue dans la saisie des auteurs")
screen_x =int(toplevelAuteur.winfo_screenwidth())
screen_y =int(toplevelAuteur.winfo_screenheight())
toplevelAuteur_x =1260
toplevelAuteur_y =720
pos_x = (screen_x //2) - (toplevelAuteur_x //2)
pos_y = (screen_y //2) - (toplevelAuteur_y //2)
geo ="{}x{}+{}+{}".format(toplevelAuteur_x, toplevelAuteur_y, pos_x, pos_y)
toplevelAuteur.geometry(geo)
toplevelAuteur.resizable(width=False,height=False) # Fenêtre modifiable True or False
toplevelAuteur.configure(bg='Gray79')
labelAuteur = Label(toplevelAuteur, text="Auteur",bg='Gray79', font=("Arial", 12,"bold"))
labelAuteur.place(x=30,y=38)
entreeAuteur = Entry (toplevelAuteur, width="50",font=("Arial", 12,"bold"))
entreeAuteur.place(x=30,y=65)
labelInfo = Label(toplevelAuteur, text="Information",bg='Gray79', font=("Arial", 12,"bold"))
labelInfo.place(x=30,y=100)
entreeInfo = Text(toplevelAuteur, width="149", height="30")
entreeInfo.place(x=30,y=127)
boutonEnregistrer = HoverButton(toplevelAuteur, text='Enregistrer', activebackground="SkyBlue1", command=lambda : enregisterAuteur(entreeAuteur.get(), entreeInfo.get('1.0', END)))
boutonEnregistrer.pack(side=BOTTOM, anchor=SE, padx=20, pady=20) #boutonEnregistrer.place(x=700,y=400)
defruncitation():
global boutonEnregistrer
toplevelCitation = Toplevel() #== Contructeur Toplevel ==
toplevelCitation.title(" Bienvenue dans la saisie des citations")
screen_x =int(toplevelCitation.winfo_screenwidth())
screen_y =int(toplevelCitation.winfo_screenheight())
toplevelCitation_x =1260
toplevelCitation_y =720
pos_x = (screen_x //2) - (toplevelCitation_x //2)
pos_y = (screen_y //2) - (toplevelCitation_y //2)
geo ="{}x{}+{}+{}".format(toplevelCitation_x, toplevelCitation_y, pos_x, pos_y)
toplevelCitation.geometry(geo)
toplevelCitation.resizable(width=False,height=False) # Fenêtre modifiable True or False
toplevelCitation.configure(bg='lightblue3')
labelCitation_Auteur = Label(toplevelCitation, text="Auteur",bg='lightblue3', font=("Arial", 12,"bold"))
labelCitation_Auteur.place(x=30,y=38)
# C'est là mon souci
labelCitation_Auteur = Label(toplevelCitation, text="Auteur",bg='lightblue3', font=("Arial", 12,"bold"))
labelCitation_Auteur.place(x=30,y=38)
# Et là aussi
cmb_nomsauteur.place(x=30,y=65)
labelCitation = Label(toplevelCitation, text="Citation",bg='lightblue3', font=("Arial", 12,"bold"))
labelCitation.place(x=30,y=100)
entreeCitation = Text(toplevelCitation, width="149", height="28")
entreeCitation.place(x=30,y=127)
labelReference = Label(toplevelCitation, text="Référence",bg='lightblue3', font=("Arial", 12,"bold"))
labelReference.place(x=30,y=593)
entreeReference = Text(toplevelCitation, width="149", height="1")
entreeReference.place(x=30,y=620)
# get => thetext = text.get ('1.0', 'end') clea veut de la 1ère à 'end' la fin de la dernière ligne
boutonEnregistrer_citation = Button(toplevelCitation, text='Enregistrer', command=lambda : enregisterCitation(entreeCitation_Auteur.get(), entreeCitation.get('1.0', END), entreeReference.get('1.0', END)))
boutonEnregistrer_citation.pack(side=BOTTOM, anchor=SE, padx=20, pady=20)
#================== Création de la fénêtre principale ================
fenetre_pce =Tk() # Fenêtre prinicpale
fenetre_pce.title("Menesis... se souvenir !")
screen_x =int(fenetre_pce.winfo_screenwidth()) # Fonction centrer fenêtre
screen_y =int(fenetre_pce.winfo_screenheight())
fenetre_pce_x =1600
fenetre_pce_y =900
pos_x = (screen_x //2) - (fenetre_pce_x //2)
pos_y = (screen_y //2) - (fenetre_pce_y //2)
geo ="{}x{}+{}+{}".format(fenetre_pce_x, fenetre_pce_y, pos_x, pos_y) # Attention le 1er facteur est x ensuite +
fenetre_pce.geometry(geo)
fenetre_pce.resizable(width=False,height=False) # Fenêtre modifiable True or False
fenetre_pce.iconbitmap("img/search.ico") ### Changement de l'icone de la fenêtre [l'icone doit être placé dans le répertoire racine de l'application ou un autre répertoire img/...]
#=================== Création d'un menu ==============================
menubar = Menu(fenetre_pce,borderwidth=20, relief=GROOVE) # Création de la FRAME pour placer les menus dans le constructeur ==> fenetre =Tk()
menuFichier = Menu(menubar, tearoff=0) # Création du menu "Fichier"
menubar.add_cascade(label="Fichier", menu=menuFichier) # Rattachement des commandes au menu "Fichier"
menuFichier.add_command(label="Créer")
menuFichier.add_command(label="Ouvrir",)
menuFichier.add_command(label="Editer")
menuFichier.add_separator() # Ligne de séparation
menuFichier.add_command(label="Quitter", command=fenetre_pce.quit)
menuEdition = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Edition", menu=menuEdition)
menuEdition.add_command(label="Couper")
menuEdition.add_command(label="Copier")
menuEdition.add_command(label="Coller")
menuEdition.add_command(label="Créer")
menuAuteur = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Auteur", menu=menuAuteur)
menuAuteur.add_command(label="Créer", command=runauteur)
menuAuteur.add_command(label="Consulter")
menuCitation = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Citation", menu=menuCitation)
menuCitation.add_command(label="Créer", command=runcitation)
menuCitation.add_command(label="Consulter")
menuAide = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Aide", menu=menuAide)
menuAide.add_command(label="A propos")
fenetre_pce.config(menu=menubar) # Configuration et print menu
#----------------------------------------------------------------
#Citation accueil
labelcitation1 = Label(fenetre_pce, text="'Le souvenir est le parfum de l'âme' - Georges Sand", font=("Arial", 14,"bold")).pack()
# Fond d'écram accueil
frontimage = ImageTk.PhotoImage(Image.open("img/connaissance_1600-900.jpg") ) # image de fond page d'accueil
frontimagelabel = Label(fenetre_pce, image=frontimage).pack(expand=1)
#== Fermeture de la boucle principale ==
fenetre_pce.mainloop() # Boucle principale |
Partager