-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDivisionEditor.py
114 lines (94 loc) · 4.26 KB
/
DivisionEditor.py
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
import tkinter as tk
from tkinter import ttk
import json
import os
from tkinter import messagebox
class DivisionEditor(tk.Tk):
def __init__(self):
super().__init__()
self.title("Éditeur de Division")
self.geometry("600x400")
self.dropdown = None
# Définition des statistiques de la division
self.stats = {
"Nom de Template": tk.StringVar(),
"PV": tk.DoubleVar(),
"Organisation": tk.DoubleVar(),
"Soft Attack": tk.DoubleVar(),
"Hard Attack": tk.DoubleVar(),
"Defense": tk.DoubleVar(),
"Attaque": tk.DoubleVar(),
"Piercing": tk.DoubleVar(),
"Armor": tk.DoubleVar(),
"Hardness": tk.DoubleVar(),
"Width": tk.IntVar(),
"Initiative": tk.DoubleVar()
}
# Charger les divisions existantes pour le menu déroulant
self.divisions = self.load_divisions()
self.division_templates = [division["Nom de Template"] for division in self.divisions]
# Menu déroulant pour sélectionner une division
self.selected_division = tk.StringVar()
self.selected_division.set("Sélectionner une template")
self.dropdown = ttk.Combobox(self, textvariable=self.selected_division, values=self.division_templates)
self.dropdown.pack(pady=10)
self.dropdown.bind("<<ComboboxSelected>>", self.load_division)
# Conteneur pour le Nom de Template
frame_name = tk.Frame(self)
frame_name.pack(fill=tk.X, pady=10)
tk.Label(frame_name, text="Nom de Template").pack(side=tk.LEFT, padx=10)
tk.Entry(frame_name, textvariable=self.stats["Nom de Template"]).pack(side=tk.LEFT, fill=tk.X, expand=True,
padx=10)
# Conteneur pour les autres statistiques
frame_stats = tk.Frame(self)
frame_stats.pack(fill=tk.BOTH, expand=True)
# Création des champs de saisie
row = 0
col = 0
for i, (stat, var) in enumerate(self.stats.items()):
if stat != "Nom de Template":
tk.Label(frame_stats, text=stat).grid(row=row, column=col, padx=5, pady=5, sticky=tk.W)
tk.Entry(frame_stats, textvariable=var).grid(row=row, column=col + 1, padx=5, pady=5)
if col == 0:
col = 2
else:
col = 0
row += 1
# Bouton de sauvegarde
tk.Button(self, text="Sauvegarder", command=self.save_division).pack(pady=10)
def load_divisions(self):
if os.path.exists("Saves/divisions.json"):
with open("Saves/divisions.json", "r") as file:
try:
return json.load(file)
except json.JSONDecodeError:
return []
return []
def load_division(self, event):
selected_name = self.selected_division.get()
for division in self.divisions:
if division["Nom de Template"] == selected_name:
for stat, var in self.stats.items():
var.set(division[stat])
break
def save_division(self):
division_data = {stat: var.get() for stat, var in self.stats.items()}
division_data["Nom de Template"] = self.stats["Nom de Template"].get()
# Vérifier si une division avec le même nom existe déjà
for i, division in enumerate(self.divisions):
if division["Nom de Template"] == division_data["Nom de Template"]:
self.divisions[i] = division_data
break
else:
# Ajouter la nouvelle division si elle n'existe pas déjà
self.divisions.append(division_data)
self.division_templates.append(division_data["Nom de Template"])
# Sauvegarder toutes les divisions dans le fichier JSON
with open("Saves/divisions.json", "w") as file:
json.dump(self.divisions, file, indent=4)
# Mettre à jour le menu déroulant
self.selected_division.set("Sélectionner une division")
self.dropdown['values'] = self.division_templates
print("Division sauvegardée:", division_data)
app = DivisionEditor()
app.mainloop()