error warning for player

This commit is contained in:
Didictateur 2026-02-10 17:52:24 +01:00
parent b17e65a955
commit 1e3ea245e8

View file

@ -74,13 +74,21 @@ ttk.Label(frm, text="Score", font=("Helvetica", 11, "bold")).grid(column=2, row=
entry_player_name = ttk.Entry(frm, width=30, font=("Helvetica", 10)) entry_player_name = ttk.Entry(frm, width=30, font=("Helvetica", 10))
entry_player_name.grid(column=1, row=len(PLAYERS) + 1, padx=10, pady=10) entry_player_name.grid(column=1, row=len(PLAYERS) + 1, padx=10, pady=10)
error_add_player = ttk.Label(frm, text="", font=('Helvetica', 9), foreground="#F02A2A")
error_add_player.grid(column=1, row=len(PLAYERS) + 2, padx=10, pady=10)
# adding player # adding player
def addPlayer(entry: Entry): def addPlayer(entry: Entry):
txt = entry.get() txt = entry.get()
if txt and not txt in [p.name for p in PLAYERS]: if not txt:
error_add_player.config(text="No name inserted")
elif txt in [p.name for p in PLAYERS]:
error_add_player.config(text=f"Player {txt} already exists")
else:
error_add_player.config(text="")
PLAYERS.append(Player(txt)) PLAYERS.append(Player(txt))
entry.delete(0, END) entry.delete(0, END)
refreshUi() refreshUi()
btn_player_name = ttk.Button(frm, text=" Add", command=lambda : addPlayer(entry_player_name)) btn_player_name = ttk.Button(frm, text=" Add", command=lambda : addPlayer(entry_player_name))
btn_player_name.grid(column=2, row=len(PLAYERS) + 1, padx=10, pady=10) btn_player_name.grid(column=2, row=len(PLAYERS) + 1, padx=10, pady=10)
@ -139,7 +147,12 @@ def addTable():
ttk.Button(popup, text="✕ Cancel", command=lambda : cancelTopLevel(popup)).grid(column=2, row=4, padx=10, pady=20) ttk.Button(popup, text="✕ Cancel", command=lambda : cancelTopLevel(popup)).grid(column=2, row=4, padx=10, pady=20)
btn_create_table = ttk.Button(frm, text=" Create table", command=addTable) btn_create_table = ttk.Button(frm, text=" Create table", command=addTable)
btn_create_table.grid(column=1, row=len(PLAYERS) + 2, padx=10, pady=20) btn_create_table.grid(
column=1,
row=len(PLAYERS) + 2,
padx=10,
pady=20
)
# refresh ui # refresh ui
def refreshUi(): def refreshUi():
@ -151,7 +164,8 @@ def refreshUi():
if widget not in [ if widget not in [
entry_player_name, entry_player_name,
btn_player_name, btn_player_name,
btn_create_table btn_create_table,
error_add_player
]: ]:
info = widget.grid_info() info = widget.grid_info()
if info.get('row', 0) > 0 and info.get('row', 0) < 100: if info.get('row', 0) > 0 and info.get('row', 0) < 100:
@ -175,9 +189,17 @@ def refreshUi():
entry.insert(0, player.name) entry.insert(0, player.name)
entry.grid(column=0, row=0, padx=10, pady=10) entry.grid(column=0, row=0, padx=10, pady=10)
error_change_player = ttk.Label(popup, text="", font=('Helvetica', 9), foreground="#F02A2A")
error_change_player.grid(column=0, row=1, padx=10, pady=10)
def changeName(): def changeName():
name = entry.get() name = entry.get()
if name and not name in [p.name for p in PLAYERS]: if not name:
error_change_player.config(text="No name inserted")
elif name in [p.name for p in PLAYERS]:
error_change_player.config(text=f"Player {name} already exists")
else:
error_change_player.config(text="")
player.name = name player.name = name
entry.delete(0, END) entry.delete(0, END)
cancelTopLevel(popup) cancelTopLevel(popup)
@ -185,6 +207,7 @@ def refreshUi():
def deletePlayer(): def deletePlayer():
for t in TABLES: for t in TABLES:
if player.name in [t.p1.name, t.p2.name, t.p3.name, t.p4.name]: if player.name in [t.p1.name, t.p2.name, t.p3.name, t.p4.name]:
error_change_player.config(text=f"Cannot delete: player still in table {t.id}")
return return
PLAYERS.remove(player) PLAYERS.remove(player)
cancelTopLevel(popup) cancelTopLevel(popup)
@ -198,14 +221,25 @@ def refreshUi():
# adding player # adding player
entry_player_name.grid(column=1, row=len(PLAYERS) + 1) entry_player_name.grid(column=1, row=len(PLAYERS) + 1)
btn_player_name.grid(column=2, row=len(PLAYERS) + 1) btn_player_name.grid(column=2, row=len(PLAYERS) + 1)
error_add_player.grid(column=1, row=len(PLAYERS) + 2, padx=10, pady=10)
# show tables # show tables
ttk.Label(frm, text="Tables", font=("Helvetica", 12, "bold")).grid(column=0, row=len(PLAYERS) + 3, columnspan=3, padx=10, pady=20) ttk.Label(
frm,
text="Tables",
font=("Helvetica", 12, "bold")
).grid(
column=0,
row=len(PLAYERS) + 3 + int(error_add_player.cget("text") != ""),
columnspan=3,
padx=10,
pady=20
)
for i, table in enumerate(TABLES): for i, table in enumerate(TABLES):
nbCol = 4 nbCol = 4
col = i % nbCol col = i % nbCol
row = len(PLAYERS) + 4 + (i // nbCol) row = len(PLAYERS) + 4 + (i // nbCol) + int(error_add_player.cget("text") != "")
style = ttk.Style() style = ttk.Style()
style.theme_use('clam') style.theme_use('clam')
@ -312,7 +346,12 @@ def refreshUi():
child.bind("<Button-1>", onClick) child.bind("<Button-1>", onClick)
# adding table # adding table
btn_create_table.grid(column=1, row=len(PLAYERS) + 2, padx=10, pady=20) btn_create_table.grid(
column=1,
row=len(PLAYERS) + 2 + int(error_add_player.cget("text") != ""),
padx=10,
pady=20
)
def cancelTopLevel(tl: Toplevel): def cancelTopLevel(tl: Toplevel):
tl.destroy() tl.destroy()