{"id":20905868,"url":"https://github.com/sumitkumargiri/sports-management-project-python-using-tkinter","last_synced_at":"2026-04-26T19:31:30.650Z","repository":{"id":159969623,"uuid":"484536754","full_name":"SumitKumargiri/sports-management-project-python-using-tkinter","owner":"SumitKumargiri","description":"This repository contains all the best practices for managing Github repository.","archived":false,"fork":false,"pushed_at":"2023-10-30T09:38:46.000Z","size":10,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-12T22:43:48.867Z","etag":null,"topics":["github","gui","gui-application","open-source","project","python","tkinter"],"latest_commit_sha":null,"homepage":"https://sumitkumargiri.github.io/portfolio_web/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SumitKumargiri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-22T18:38:21.000Z","updated_at":"2023-11-07T19:40:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"6cafb59a-6b00-4354-a704-a7c0f4424c9b","html_url":"https://github.com/SumitKumargiri/sports-management-project-python-using-tkinter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SumitKumargiri/sports-management-project-python-using-tkinter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SumitKumargiri%2Fsports-management-project-python-using-tkinter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SumitKumargiri%2Fsports-management-project-python-using-tkinter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SumitKumargiri%2Fsports-management-project-python-using-tkinter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SumitKumargiri%2Fsports-management-project-python-using-tkinter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SumitKumargiri","download_url":"https://codeload.github.com/SumitKumargiri/sports-management-project-python-using-tkinter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SumitKumargiri%2Fsports-management-project-python-using-tkinter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32310804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T19:15:34.056Z","status":"ssl_error","status_checked_at":"2026-04-26T19:15:15.467Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github","gui","gui-application","open-source","project","python","tkinter"],"created_at":"2024-11-18T13:28:00.421Z","updated_at":"2026-04-26T19:31:30.630Z","avatar_url":"https://github.com/SumitKumargiri.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sports-management-project-python-using-tkinter\n#import modules\nimport tkinter as tk\nfrom tkinter.simpledialog import askstring\nfrom tkinter import *\nimport os\n \n# Designing window for registration\n \ndef register():\n    global register_screen\n    register_screen = Toplevel(main_screen)\n    register_screen.title(\"Register\")\n    register_screen.geometry(\"300x250\")\n \n    global username\n    global password\n    global username_entry\n    global password_entry\n    username = StringVar()\n    password = StringVar()\n \n    Label(register_screen, text=\"Please enter details below\", bg=\"blue\").pack()\n    Label(register_screen, text=\"\").pack()\n    username_lable = Label(register_screen, text=\"Username * \")\n    username_lable.pack()\n    username_entry = Entry(register_screen, textvariable=username)\n    username_entry.pack()\n    password_lable = Label(register_screen, text=\"Password * \")\n    password_lable.pack()\n    password_entry = Entry(register_screen, textvariable=password, show='*')\n    password_entry.pack()\n    Label(register_screen, text=\"\").pack()\n    Button(register_screen, text=\"Register\", width=10, height=1, bg=\"blue\", command = register_user).pack()\n \n \n# Designing window for login \n \ndef login():\n    global login_screen\n    login_screen = Toplevel(main_screen)\n    login_screen.title(\"Login\")\n    login_screen.geometry(\"300x250\")\n    Label(login_screen, text=\"Please enter details below to login\").pack()\n    Label(login_screen, text=\"\").pack()\n \n    global username_verify\n    global password_verify\n \n    username_verify = StringVar()\n    password_verify = StringVar()\n \n    global username_login_entry\n    global password_login_entry\n \n    Label(login_screen, text=\"Username * \").pack()\n    username_login_entry = Entry(login_screen, textvariable=username_verify)\n    username_login_entry.pack()\n    Label(login_screen, text=\"\").pack()\n    Label(login_screen, text=\"Password * \").pack()\n    password_login_entry = Entry(login_screen, textvariable=password_verify, show= '*')\n    password_login_entry.pack()\n    Label(login_screen, text=\"\").pack()\n    Button(login_screen, text=\"Login\", width=10, height=1, command = login_verify).pack()\n \n# Implementing event on register button\n \ndef register_user():\n \n    username_info = username.get()\n    password_info = password.get()\n \n    file = open(username_info, \"w\")\n    file.write(username_info + \"\\n\")\n    file.write(password_info)\n    file.close()\n \n    username_entry.delete(0, END)\n    password_entry.delete(0, END)\n \n    Label(register_screen, text=\"Registration Success\", fg=\"green\", font=(\"calibri\", 11)).pack()\n \n# Implementing event on login button \n \ndef login_verify():\n    username1 = username_verify.get()\n    password1 = password_verify.get()\n    username_login_entry.delete(0, END)\n    password_login_entry.delete(0, END)\n \n    list_of_files = os.listdir()\n    if username1 in list_of_files:\n        file1 = open(username1, \"r\")\n        verify = file1.read().splitlines()\n        if password1 in verify:\n            login_sucess()\n \n        else:\n            password_not_recognised()\n \n    else:\n        user_not_found()\n \n# Designing popup for login success\n \ndef login_sucess():\n    global login_success_screen\n    login_success_screen = Toplevel(login_screen)\n    login_success_screen.title(\"Success\")\n    login_success_screen.geometry(\"150x100\")\n    Label(login_success_screen, text=\"Login Success\").pack()\n    Button(login_success_screen, text=\"OK\", command=delete_login_success).pack()\n \n# Designing popup for login invalid password\n \ndef password_not_recognised():\n    global password_not_recog_screen\n    password_not_recog_screen = Toplevel(login_screen)\n    password_not_recog_screen.title(\"Success\")\n    password_not_recog_screen.geometry(\"150x100\")\n    Label(password_not_recog_screen, text=\"Invalid Password \").pack()\n    Button(password_not_recog_screen, text=\"OK\", command=delete_password_not_recognised).pack()\n \n# Designing popup for user not found\n \ndef user_not_found():\n    global user_not_found_screen\n    user_not_found_screen = Toplevel(login_screen)\n    user_not_found_screen.title(\"Success\")\n    user_not_found_screen.geometry(\"150x100\")\n    Label(user_not_found_screen, text=\"User Not Found\").pack()\n    Button(user_not_found_screen, text=\"OK\", command=delete_user_not_found_screen).pack()\n \n# Deleting popups\n \ndef delete_login_success():\n    login_success_screen.destroy()\n \n \ndef delete_password_not_recognised():\n    password_not_recog_screen.destroy()\n \n \ndef delete_user_not_found_screen():\n    user_not_found_screen.destroy()\n \n \n# Designing Main(first) window\n \ndef main_account_screen():\n    global main_screen\n    main_screen = Tk()\n    main_screen.geometry(\"300x250\")\n    main_screen.title(\"Account Login\")\n    Label(text=\"Select Your Choice\", bg=\"blue\", width=\"300\", height=\"2\", font=(\"Calibri\", 13)).pack()\n    Label(text=\"\").pack()\n    Button(text=\"Login\", height=\"2\", width=\"30\", command = login).pack()\n    Label(text=\"\").pack()\n    Button(text=\"Register\", height=\"2\", width=\"30\", command=register).pack()\n \n    main_screen.mainloop()\n \n \nmain_account_screen()\n\nKEYS = (\"Matches Played\", \"Goals\", \"Assists\", \"YC\", \"RC\")\n\n# create a player and save into \"stored_data\"\ndef create_player(name, matches=0, goals=0, assists=0, yc=0, rc=0):\n    statistics = {}\n    for key, val in zip(KEYS, (matches, goals, assists, yc, rc)):\n        statistics[key] = tk.IntVar(value=val)\n    stored_data[name] = statistics\n\n\n# a generic function to edit player statistics\ndef edit_player(parent, name):\n    def change(var, delta):\n        value = var.get() + delta\n        if value \u003e= 0:\n            var.set(value)\n\n    def create_form(parent, key, var):\n        f = tk.Frame(parent, bd=1, relief=\"sunken\")\n        f.pack(side=\"left\")\n        tk.Label(f, text=key, width=12, fg=\"white\", bg=\"blue\").grid(row=0, column=0, columnspan=3)\n        tk.Button(f, text=\"-\", command=lambda: change(var, -1)).grid(row=1, column=0, sticky=\"ew\")\n        tk.Label(f, textvariable=var, width=3).grid(row=1, column=1)\n        tk.Button(f, text=\"+\", command=lambda: change(var, +1)).grid(row=1, column=2, sticky=\"ew\")\n\n    tp = tk.Toplevel(parent)\n    tp.title(\"Edit Player Statistics\")\n    tk.Label(tp, text=name, font=\"Helvetica 14 bold\").pack()\n    frame = tk.Frame(tp)\n    frame.pack()\n    statistics = stored_data[name]\n    for col, (key, var) in enumerate(statistics.items(), 1):\n        create_form(frame, key, var)\n    # make this toplevel like a modal dialog\n    tp.grab_set()\n    tp.wait_window()\n\n\n# show player statistics\ndef add_player_row(parent, row, name):\n    tk.Label(parent, text=name, anchor=\"w\").grid(row=row, column=0, sticky=\"ew\")\n    statistics = stored_data[name]\n    for col, key in enumerate(KEYS, 1):\n        tk.Label(parent, textvariable=statistics[key]).grid(row=row, column=col)\n    tk.Button(parent, text=\"Edit\", command=lambda: edit_player(root, name)).grid(row=row, column=col+1)\n\n\n# ask for new player name and create the player\ndef new_player(parent):\n    # get player name\n    name = askstring(\"New Player\", \"Player Name\")\n    if name:\n        create_player(name)\n        add_player_row(parent, len(stored_data), name)\n\n\n# main block\n\nroot = tk.Tk()\n\nstored_data = {}\n# store player data\ncreate_player('Daniel Keelagher', 10, 4, 4, 0, 0)\ncreate_player('Joseph Keelagher', 10, 2, 2, 1, 0)\ncreate_player('Benjamin Miller', 10, 0, 0, 1, 0)\ncreate_player('Joran Terlato', 8, 1, 1, 3, 1)\ncreate_player('Arki Gantzos', 9, 3, 2, 0, 0)\ncreate_player('Billy Houndalas', 10, 0, 0, 0, 0)\ncreate_player('Hayato Uematsu', 9, 2, 3, 0, 0)\ncreate_player('Mark Boccari', 10, 1, 1, 2, 0)\ncreate_player('Oliver Gibson', 7, 1, 2, 0, 0)\ncreate_player('Zaid Khaleqi', 9, 2, 0, 0, 0)\n\n# Application title\ntk.Label(text=\"Chelsea FC Player Statistics\", font=(None, 15, 'bold'), fg=\"blue\",).pack(pady=5)\n\n# a frame for showing player statistics\ntable_frame = tk.Frame(root)\ntable_frame.pack()\n\n# table headings\nfont=\"Helvetica 13 bold\"\ntk.Label(table_frame, text=\"Player Name\", font=font, anchor=\"w\", width=20, fg=\"white\", bg=\"blue\").grid(row=0, column=0, sticky=\"ew\")\nfor col, key in enumerate(KEYS, 1):\n    tk.Label(table_frame, text=key, font=font, width=12, fg=\"white\", bg=\"blue\").grid(row=0, column=col)\ntk.Label(table_frame, font=font, anchor=\"w\", fg=\"white\", bg=\"blue\").grid(row=0, column=col+1, sticky=\"ew\")\n\n# player statistics table\nfor row, name in enumerate(stored_data, 1):\n    add_player_row(table_frame, row, name)\n\n# add new player button\ntk.Button(root, text=\"Add New Player\", command=lambda: new_player(table_frame)).pack(pady=5)\n# Main loop of tkinter\nroot.mainloop()\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsumitkumargiri%2Fsports-management-project-python-using-tkinter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsumitkumargiri%2Fsports-management-project-python-using-tkinter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsumitkumargiri%2Fsports-management-project-python-using-tkinter/lists"}