Les meilleurs développeurs informatique freelances sont sur Codeur.com
Fermé · Moins de 500 € · 8 offres · 2205 vues
import json
import os
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout
DATA_FILE = "membres.json"
# --- Gestion du fichier JSON ---
def charger_donnees():
if os.path.exists(DATA_FILE):
try:
with open(DATA_FILE, "r") as f:
return json.load(f)
except:
return {"membres": []}
else:
return {"membres": []}
def sauvegarder_donnees(data):
with open(DATA_FILE, "w") as f:
json.dump(data, f, indent=4)
# --- Interface principale ---
class MainScreen(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.orientation = "vertical"
self.padding = 20
self.spacing = 10
self.data = charger_donnees()
# Titre
self.add_widget(Label(
text="📿 Mouridoul Lahi",
font_size=28,
bold=True,
color=(1, 1, 1, 1)
))
# Zone d'ajout
self.nom = TextInput(hint_text="Nom du membre", multiline=False, size_hint_y=None, height=40)
self.tel = TextInput(hint_text="Numéro téléphone", multiline=False, size_hint_y=None, height=40)
self.montant = TextInput(hint_text="Montant cotisation", multiline=False, size_hint_y=None, height=40)
self.add_widget(self.nom)
self.add_widget(self.tel)
self.add_widget(self.montant)
bouton = Button(text="➕ Ajouter membre", size_hint_y=None, height=50, background_color=(0, 0.6, 0, 1))
bouton.bind(on_press=self.ajouter_membre)
self.add_widget(bouton)
# Liste des membres
self.scroll = ScrollView(size_hint=(1, 1))
self.list_layout = GridLayout(cols=1, spacing=5, size_hint_y=None)
self.list_layout.bind(minimum_height=self.list_layout.setter('height'))
self.scroll.add_widget(self.list_layout)
self.add_widget(self.scroll)
self.refresh_list()
# Ajouter un membre
def ajouter_membre(self, instance):
nom = self.nom.text.strip()
tel = self.tel.text.strip()
montant = self.montant.text.strip()
if nom == "" or tel == "" or montant == "":
return
self.data["membres"].append({
"nom": nom,
"tel": tel,
"montant": montant
})
sauvegarder_donnees(self.data)
self.nom.text = ""
self.tel.text = ""
self.montant.text = ""
self.refresh_list()
# Rafraîchir l'affichage
def refresh_list(self):
self.list_layout.clear_widgets()
for i, m in enumerate(self.data["membres"], 1):
texte = f"• {m['nom']} | 📞 {m['tel']} | 💰 {m['montant']} CFA"
self.list_layout.add_widget(Label(text=texte, size_hint_y=None, height=40))
class MouridoulLahiApp(App):
def build(self):
return MainScreen()
if __name__ == "__main__":
MouridoulLahiApp().run()import json
import os
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout
DATA_FILE = "membres.json"
# --- Gestion du fichier JSON ---
def charger_donnees():
if os.path.exists(DATA_FILE):
try:
with open(DATA_FILE, "r") as f:
return json.load(f)
except:
return {"membres": []}
else:
return {"membres": []}
def sauvegarder_donnees(data):
with open(DATA_FILE, "w") as f:
json.dump(data, f, indent=4)
# --- Interface principale ---
class MainScreen(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.orientation = "vertical"
self.padding = 20
self.spacing = 10
self.data = charger_donnees()
# Titre
self.add_widget(Label(
text="📿 Mouridoul Lahi",
font_size=28,
bold=True,
color=(1, 1, 1, 1)
))
# Zone d'ajout
self.nom = TextInput(hint_text="Nom du membre", multiline=False, size_hint_y=None, height=40)
self.tel = TextInput(hint_text="Numéro téléphone", multiline=False, size_hint_y=None, height=40)
self.montant = TextInput(hint_text="Montant cotisation", multiline=False, size_hint_y=None, height=40)
self.add_widget(self.nom)
self.add_widget(self.tel)
self.add_widget(self.montant)
bouton = Button(text="➕ Ajouter membre", size_hint_y=None, height=50, background_color=(0, 0.6, 0, 1))
bouton.bind(on_press=self.ajouter_membre)
self.add_widget(bouton)
# Liste des membres
self.scroll = ScrollView(size_hint=(1, 1))
self.list_layout = GridLayout(cols=1, spacing=5, size_hint_y=None)
self.list_layout.bind(minimum_height=self.list_layout.setter('height'))
self.scroll.add_widget(self.list_layout)
self.add_widget(self.scroll)
self.refresh_list()
# Ajouter un membre
def ajouter_membre(self, instance):
nom = self.nom.text.strip()
tel = self.tel.text.strip()
montant = self.montant.text.strip()
if nom == "" or tel == "" or montant == "":
return
self.data["membres"].append({
"nom": nom,
"tel": tel,
"montant": montant
})
sauvegarder_donnees(self.data)
self.nom.text = ""
self.tel.text = ""
self.montant.text = ""
self.refresh_list()
# Rafraîchir l'affichage
def refresh_list(self):
self.list_layout.clear_widgets()
for i, m in enumerate(self.data["membres"], 1):
texte = f"• {m['nom']} | 📞 {m['tel']} | 💰 {m['montant']} CFA"
self.list_layout.add_widget(Label(text=texte, size_hint_y=None, height=40))
class MouridoulLahiApp(App):
def build(self):
return MainScreen()
if __name__ == "__main__":
MouridoulLahiApp().run()
Budget indicatif : Moins de 500 €
Publication : 21 novembre 2025 à 18h29
Profils recherchés : Développeur spécifique freelance , Développeur mobile freelance , Développeur Python freelance
8 freelances ont répondu à ce projet
7 propositions de devis en moins de 2h
Montant moyen des devis proposés : 1 050 €
Estimation du délai : 12 jours
Nos ressources utiles
Allez plus loin avec nos ressources liées à ce projet !
Simulateur de prix : Combien coûte une application mobile ?
Téléchargement : Cahier des charges pour créer une application mobile
Guide : Les meilleurs outils pour créer une application mobile en ligne