Bonjour,

J'ouvre un sujet que je pense fermer quand les divers sous-sujets auront été abordés.

J'ai réalisé ma première interface C'est cool, mais c'est pas tout à fait ce que je voulait. C'est, comment dire, bordélique oh pas possible ! On y retrouverais plus un "self" d'un "parent", d'un "button", d'un "entry"...

J'ai donc décidé de refaire à zero, ou presque. En effet, j'ai basculé l'ossature du soft avec l'utilisation de classes. C'est plus propre visuellement. Avant de partir dans tous les sens, j'aimerais faire le point sur ce qui manque sur la précédente interface.

  1. Le redimensionnement ne fonctionne que partiellement (quand la fenêtre s'agrandit uniquement) - J'aimerais donc que ça fonctionne en X et en Y y compris quand nous redimensionnons la fenêtre en plus grand, comme en plus petit
  2. L'ergonomie est à revoir. Certains boutons sont positionner loin de leur utilités (revoir donc leurs positions)
  3. Les éléments de saisie ne sont pas clairs et trop rapprochés (il faudra ajouter des box avec des noms...)
  4. Certaines fonctions impliqueront des modifications des champs de saisie ; certains champs ne doivent pas être modifiable. Il faudra voir comment ça peut se protéger au final.


J'ai donc attaqué une base saine dans lequel j'aimerais faire des essais. C'est mon point de départ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
import tkinter as tk
 
#Variable custom
vers = "1.0"
name = "Test TKINTER"
 
class Appli(tk.Frame):
    def __init__(self, parent):
        self.parent = parent
        tk.Frame.__init__(self, parent)
 
def main():
    win = tk.Tk()
    Appli(win).pack(side = "top", fill = "both", expand = True)
    win.title(name + " - V " + vers)
    win.resizable(True, True)
    win.geometry("1080x600+100+20")
    win.minsize(360, 200)
    win.mainloop()
 
if __name__ == "__main__":
    main()
Je dois disposer d'un menu, en haut avec:
File
+New
+Save
+Save as
+ Close
J'avais utilisé la première fois un bout de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
#Widget Menu
menuBar = Menu(root)
 
fileMenu = Menu(menuBar, tearoff = 0)
fileMenu.add_command(label = "Open", command = cmdOpen)
fileMenu.add_command(label = "Save", command = cmdSave)
fileMenu.add_command(label = "Save as", command = cmdSaveAs)
menuBar.add_cascade(label = "File", menu = fileMenu)
root.config(menu=menuBar)
Ma première question, avant d'aller plus loin, c'est comment je vais intégrer le menu à ma classe ? Est-ce que je peux le placer dans un def menu(): ou même une classe ?

Merci pour vos suggestions, la discussion est ouverte