From 06d98bfc6105398b3cb8507aadf91585b8f151b8 Mon Sep 17 00:00:00 2001 From: spinel Date: Thu, 16 Feb 2023 00:19:12 +0100 Subject: [PATCH] fix loading from file --- __pycache__/scenario.cpython-310.pyc | Bin 662 -> 597 bytes __pycache__/team.cpython-310.pyc | Bin 2189 -> 2292 bytes __pycache__/terrain.cpython-310.pyc | Bin 638 -> 602 bytes data/team.json | 2 +- main.py | 32 +++++------ scenario.py | 11 ++-- team.py | 77 +++++++++++++-------------- terrain.py | 9 ++-- 8 files changed, 62 insertions(+), 69 deletions(-) diff --git a/__pycache__/scenario.cpython-310.pyc b/__pycache__/scenario.cpython-310.pyc index 8af9ef2b0264a75170b2ed1c42d6c189a9f11627..3462f5dba3204a0c917be2e84c51a0c3ad2a6304 100644 GIT binary patch delta 329 zcmbQndXq8Qy7QkYVhTNqN9QyH_Enwg`R zQy7C8G+ADPbofoo^fzS&GFX7v8HkIufJ6yH7UKe@8ipFig-nbf9&-)QuoR|VrYx2e zW*}tgWt#X?&V=a}TXKF*X>Q&v=A!&^P1ajXCE2%F-HH-(Q*Uv^$7kkcmc+;3V)aQ( zO3k^&l3tXVqRBitmQjjjB}0+GL6EaSRu_W^K1La)$qyLqOF*JU0;q%_h|2^d yK&}NV=V0Jr1dC|0++r`u&de)GEh^#wDdU8x#b(GY4x8Nkl+v73J4S>_VoU(fCqpj) delta 394 zcmZus%SyvQ6uoyIX|Rd7up)x4O+UbuSVXJ}q6@p~Ce%!jG)W_qDMd(Ey6vI_T(_?D zg9MpB5P!m%q6@(b=M498&fNRXp1EK6{u-Frj=!SUxxd@lH;Dj&8T9N+GRU!y2xlOu zU{4@eOde^U3Vs8D^J%pKYHS;#N~QDO^)WLwZg65y9vD)vzzQl{5(Gttv@-sJ%*d2h zbjXY^Ra~$cMX2b)S;G8duS>NP71=l+X)23}c1o2*=|j-ayekKJtlcn7Mu`eTNzD(M zUk+~LOtU+g2#u$j-4CKPV09aJnwn>}`3AC8pW{W#GXlF`=^FBIoot|o^$T_;wj*1A vY0IYeB#Y9LYecKcRlsyZrO8OeaG}fUMKY>w1(UkP6FYQs^W<3sHma?J8dgzWyfln-5VD9Xn;S@9|jfN z+(RhE=U@^tBbE&5oLRb{X2o(#6+L1zYQ;P#={#JJ1)UM7)fR-3lE8wj>!^t%$MV97 zv9vob)CWmnp_PyI$O&B61!*o7xQv#{1%os%bj)0U8w2lFlIl}p+OUVeA9Qx|Om~WL zGSX@1@nkbi2Ax70xzka4PpA1f(<9rFd9k0HR26r}GBL?$y9#oA=<2xC4>)mzfwjO0 z+M*5GrV$m?Tm#1dV?Tcas9^CptU<++BQj$p#Hr|SY{pAoLTi;+YMEkyhbYCIdra5@ zkOCwGVgpBqi103iCPp&Tt~SUgBWn&F-H&U2Wdjr;2A6ZezDcY$xJwtPNj5G_6Y6nb zUd2AkXmIyVAWUWn+Xzu*Uco<6A@?-Kia`}|m;96PiLhQAJ_ zxDG}WL$5VQVFyM+M32w#IzpuV4yIh_9jBz8)1y?U{e?|)<>l4~E~ym$%?GQD*H^u2yR86~#gzqgv^1DO_UP^kt$6hMOmiTSQN&O(irUPqKA35nQ!I?PNX1ECwBEAh;Q2@%JCGW z8WdJq0PpLGwfQIxohWp=<-)NvAUSgjCaDNnvk>if`Vdi<*@jN_z~*Ohet^A@oaR$7 z??CaqY}1fMYz0Kvg7-F?E?NXKIe{Kq^RnD^mlcYrgUKQB=Kckup)`ee=* z9%2*i8qC4EYf;3yQ7%|&0> z;|Uu!RDkz_mkt?XZ@4qA_?s|y^n^U2TTIne1H{uj;b$qT)tv@ifcbt*%^e5?K5xQj z3Ka4A>b_TriNR+OP$xDZ(Odx%!SM>gTxAIaN*5R+*dw+<%uR5|%%>p7x3#Ur!CVt* zbGDR=uz{O-t`qYi48%lpe^g>_-UjMpdxfshciHsymqz2!GGF0r&$IkNc(4(HI3NlEQAE*l>qh%u&?Nqc literal 2189 zcmZuyPj6dA5Z{0A`Ps3PmIf$LN~wU#g~k;(suC)y!U1GeN(E9b*2cR@pYxud*hwRpp4NijEHXdJKG` zs=!wRUr}_8G;3#Im9(4G)4M>pbK6~9x%e1NIE=?I>}?>59*~qAP)B-n%t|t$X36of zP;^2MXo)sid$gpalP#xZZdZD?=r<$J3hTu{y5~ODd#QE6p~Od7A(d@16M=Of1)Wo3 zFev|g(|TUyx@8AxUuUhS!;LKMwyZSrc}wXXofU&z_gzaCcDFE@viAluHEDk~#&s2KL8xI}^crPI@d*oB$-I^#aM5bJ$$Z`EJ+~uGDmOCi z;~kj|wLPP7yHoDtZjlZ1zUQXc^|5tncYEKU%qK=mRrIs{QPS4Cx6t8J>IE7*!w@wW zee|7?x%Nq?llD{B>4bRt>YBq8{3MOR*!bjek#7_m#hw=#q}_{cy$`wHGO6^fbB{MYGiHhOE8#+3^n+K^pvs1J^HI=`II#h77xqc6oDo6R*C zp~{cRm_S(Q1Ooze!q&(s#o`ebls(_lE+qSun@>T>FCga5Pw)vcc%fIg^U1?Z<{L_` zuHYG1FUw?fXFiKF#H~EcimuG;Domz2&+ZjPQ{G|VS3Z;IfA`3!}3PzY5m^Xcus#Kl?Zd-{{e$o`}JIjHXtBID&n!q$M=f-`RmEMG4$P;sAMyA2RHM zV}?&k$tR)H0Uu2WJZ#w01f<1$1$HnzA;qJ`*<%yl8c%nd@w69-Vt}n>*Q8Dxd;xr< zhWWtysGAj5!!}H3FlX>?p|zN=aiiEwq1S}EepTG}L4qT+lbABbX#8)|sIe;$m(kVN zqJhXUE!fRBnfFv*pfQhV diff --git a/__pycache__/terrain.cpython-310.pyc b/__pycache__/terrain.cpython-310.pyc index e62da292008f6a7fd4da10fc91e9fd6ac2ae0659..d7cc3ed800f49bf41be1c7539f58f4bff2b4ccdd 100644 GIT binary patch delta 319 zcmeyza*KsGpO=@50SM|7-X>q1$SbQQ2jrwMq%h_%L@~NEq%fs0w=kqIr!rF}GF8EnV`WHMif-C|45&neB#yTx3TU#`h|i>W007OPuPVs7d!j`;Y@yv&mL_*<+#iAkwB zw^-7PGE*k|Gs-jaPtIrb5a0w_1hTalMDQ`nOg_%&Py!Mx;zuO}KwKsu!3@M;)f@~w rj9?K>mRsy4*_nAIsYONXAY~jdwb%@~#bJ}1pHiBWYR8B$NsI{qrrJVu delta 355 zcmZvY%}T>S6ou!`Okz+2QoHqM;lgwwxR)x3)`fJ_uDS^|6H1ytm`o``c6QrE$P4Jk zXOjB{;=(r&?_?)9aL;hhJ@d^lD1W41`u;AXb-MV9z8nAO`kWfY6l82_cb>5vW&mu& zlu&ZRl#Ka{mfT>Dw5<)<>e3$NJ7*k7+%aiVm{@oBY5Pgt W=sya2S9z&cSv&-ba!D+z&wl}**-DQ9 diff --git a/data/team.json b/data/team.json index 71a87de..e7c58f5 100644 --- a/data/team.json +++ b/data/team.json @@ -1 +1 @@ -{"dd": {"name": "dd", "country": "ff"}} \ No newline at end of file +{"s": {"name": "s", "country": "s"}, "df": {"name": "df", "country": "fa"}, "dfdsfaf": {"name": "dfdsfaf", "country": "fa"}, "aaaaa": {"name": "aaaaa", "country": "ssss"}, "": {"name": "", "country": ""}} \ No newline at end of file diff --git a/main.py b/main.py index 55a2804..e252b79 100644 --- a/main.py +++ b/main.py @@ -1,21 +1,23 @@ import team import scenario import terrain -from tkinter import * +import tkinter as tk from tkinter import ttk - # for child in container.winfo_children(): - # child.grid_configure(padx=4, pady=5) +Screen = ( + team.TeamsPage, + team.EditTeamPage, + terrain.TerrainsPage, + scenario.ScenarioPage +) -Screen = (team.TeamsPage, team.EditTeamPage, terrain.TerrainsPage, scenario.ScenarioPage) - -class App(Tk): +class App(tk.Tk): def __init__(self, *args, **kwargs): - Tk.__init__(self, *args, **kwargs) - Tk.wm_title(self, "AoS Worlds Pairing Assistant") - Tk.option_add(self, "*tearOff", False) + tk.Tk.__init__(self, *args, **kwargs) + tk.Tk.wm_title(self, "AoS Worlds Pairing Assistant") + tk.Tk.option_add(self, "*tearOff", False) - container = ttk.Frame(self, padding="100 100 100 100") + container = ttk.Frame(self)#, padding="100 100 100 100") container.pack() container.columnconfigure(0, minsize=500, weight=1) container.rowconfigure(0, minsize=300, weight=1) @@ -25,23 +27,23 @@ class App(Tk): for F in Screen: frame = F(container, self) self.frames[F] = frame - frame.grid(column=0, row=0, sticky=(N, W, E, S)) + frame.grid(column=0, row=0, sticky="nsew") for child in frame.winfo_children(): - child.grid_configure(padx=4, pady=5) + child.grid_configure(padx=5, pady=5) self.makeMenu() self.showFrame(team.TeamsPage) def makeMenu(self): - menubar = Menu(self) + menubar = tk.Menu(self) - menuScenarios = Menu(menubar) + menuScenarios = tk.Menu(menubar) menubar.add_cascade(menu=menuScenarios, label="Scenarios") menuScenarios.add_command(label="New")#, command=scenario.getScreen) menuScenarios.add_command(label="New from CSV")#, command=scenario.getScreen) menuScenarios.add_command(label="Load")#, command=scenario.getScreen) - menuConfig = Menu(menubar) + menuConfig = tk.Menu(menubar) menubar.add_cascade(menu=menuConfig, label="Configuration") menuConfig.add_command(label="Teams", command=lambda: self.showFrame(team.TeamsPage)) menuConfig.add_command(label="Terrains", command=lambda: self.showFrame(terrain.TerrainsPage)) diff --git a/scenario.py b/scenario.py index 9c313fc..2ede05a 100644 --- a/scenario.py +++ b/scenario.py @@ -1,13 +1,10 @@ -from tkinter import * -from tkinter import ttk +import tkinter as tk -class ScenarioPage(Frame): +class ScenarioPage(tk.Frame): def __init__(self, parent, controller): - Frame.__init__(self, parent) + tk.Frame.__init__(self, parent) - label = ttk.Label(self, text="Teams") - label.grid(column=1, row=1, sticky=E) - label.pack() + tk.Label(self, text="Teams").grid(column=1, row=1) # button = ttk.Button(self, text="Import") # button.grid(column=2, row=1, sticky=(W, E)) diff --git a/team.py b/team.py index 88ecfb8..d6db4fa 100644 --- a/team.py +++ b/team.py @@ -1,69 +1,64 @@ import json import os -# import data -from tkinter import * +import tkinter as tk from tkinter import ttk +path = "data/team.json" + def loadTeams(): - path = "data/teams.json" teams = {} if os.path.exists(path): - teams = json.loads("data/teams.json") + file = open(path, "r") + teams = json.loads(file.read()) + file.close() return teams -class TeamsPage(Frame): +def saveTeam(name, country): + teams = loadTeams() + team = { + "name": name, + "country": country + } + teams[name] = team + + file = open(path, "w") + file.write(json.dumps(teams)) + file.close() + +class TeamsPage(tk.Frame): def __init__(self, parent, controller): - Frame.__init__(self, parent) + tk.Frame.__init__(self, parent) teams = loadTeams() - teamKey = StringVar() + teamKey = tk.StringVar() teamSelector = ttk.Combobox(self, textvariable=teamKey, values=list(teams.keys())) - teamSelector.grid(column=1, row=1, sticky=(E, W)) + teamSelector.grid(column=1, row=1)#, sticky="ew") if len(teams) == 0: teamSelector.state(["readonly"]) - ttk.Button(self, text="New Team").grid(column=1, row=2, sticky=(E, W)) + tk.Button(self, text="New Team", command=lambda: controller.showFrame(EditTeamPage)).grid(column=1, row=2)#, sticky="ew") -class EditTeamPage(Frame): +class EditTeamPage(tk.Frame): def __init__(self, parent, controller, team=None): - Frame.__init__(self, parent) + tk.Frame.__init__(self, parent) - teamName = StringVar() - teamCountry = StringVar() + teamName = tk.StringVar() + teamCountry = tk.StringVar() if (team != None): teamName.set(team.name) teamCountry.set(team.value) - # teamName.trace_add("write", callback=lambda val: team.__setattr__("name", val)) - # teamCountry.trace_add("write", callback=lambda val: team.__setattr__("country", val)) - ttk.Label(parent, text="Name:").grid(column=1, row=1, sticky=(E, W)) - ttk.Entry(parent, textvariable=teamName).grid(column=2, row=1, sticky=(E, W)) - ttk.Label(parent, text="Country:").grid(column=1, row=2, sticky=(E, W)) - ttk.Entry(parent, textvariable=teamCountry).grid(column=2, row=2, sticky=(E, W)) + label = tk.Label(parent, text="Name:") + # .grid(column=0, row=1) + label.pack() + entry = tk.Entry(parent, textvariable=teamName) + # .grid(column=0, row=0) + entry.pack() + tk.Label(parent, text="Country:").grid(column=0, row=2) + tk.Entry(parent, textvariable=teamCountry).grid(column=0, row=2) - ttk.Button(parent, text="Save", command=lambda: self.save(teamName.get(), teamCountry.get())).grid(column=2, row=3, sticky=(E, W)) - - def save(self, name, country): - teams = loadTeams() - team = { - "name": name, - "country": country - } - - # existing = False - # for t in teams: - # if t.name == teams.name: - # t = team - # existing = True - # if not existing: - # teams.append(team) - - teams[name] = team - - file = open("data/team.json", "w") - file.write(json.dumps(teams)) - file.close() + tk.Button(parent, text="Save", command=lambda: saveTeam(teamName.get(), teamCountry.get()))#.grid(column=2, row=3) diff --git a/terrain.py b/terrain.py index bf6ae5f..2a85878 100644 --- a/terrain.py +++ b/terrain.py @@ -1,8 +1,7 @@ -from tkinter import * -from tkinter import ttk +import tkinter as tk -class TerrainsPage(Frame): +class TerrainsPage(tk.Frame): def __init__(self, parent, controller): - Frame.__init__(self, parent) + tk.Frame.__init__(self, parent) - ttk.Label(self, text="New Terrain").grid(column=1, row=1, sticky=E) \ No newline at end of file + tk.Label(self, text="New Terrain").grid(column=1, row=1) \ No newline at end of file