Advertisement
Nights_Path

Main GUI

May 31st, 2025
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.90 KB | Gaming | 0 0
  1. from kivy.app import App
  2. from kivy.uix.screenmanager import ScreenManager, FadeTransition
  3. from kivy.uix.screenmanager import Screen
  4. from kivy.uix.boxlayout import BoxLayout
  5. from kivy.uix.button import Button
  6. from kivy.uix.label import Label
  7. from kivy.clock import Clock
  8. from threading import Thread
  9. import os
  10. import json
  11. import time
  12. from splash_screen import SplashScreen
  13. from pokemon_editor import TeamBuilderScreen
  14. from pikalytics_scraper import get_pikalytics_data
  15. from kivy.uix.scrollview import ScrollView
  16. from kivy.uix.gridlayout import GridLayout
  17. from kivy.uix.image import Image
  18. from kivy.uix.widget import Widget
  19. from load_team_screen import LoadTeamScreen
  20.  
  21.  
  22. class UsageStatsScreen(Screen):
  23.     def __init__(self, **kwargs):
  24.         super().__init__(**kwargs)
  25.         layout = BoxLayout(orientation='vertical')
  26.         label = Label(text="Top Used Pokémon from Pikalytics", size_hint=(1, None), height=40)
  27.         layout.add_widget(label)
  28.  
  29.         scroll = ScrollView()
  30.         grid = GridLayout(cols=2, size_hint_y=None, spacing=10, padding=10)
  31.         grid.bind(minimum_height=grid.setter('height'))
  32.  
  33.         try:
  34.             with open(".cache/pikalytics.json", "r", encoding="utf-8") as f:
  35.                 usage_data = json.load(f)
  36.                 for name, pdata in usage_data.items():
  37.                     box = BoxLayout(orientation='vertical', size_hint_y=None, height=140)
  38.                     sprite_path = f"assets/sprites/{name.lower().replace(' ', '_')}.png"
  39.                     image = Image(source=sprite_path if os.path.exists(sprite_path) else "assets/pokeball_filled.png", size_hint_y=None, height=64)
  40.                     box.add_widget(image)
  41.                     box.add_widget(Label(text=name, font_size=14))
  42.                     box.add_widget(Label(text=pdata.get("item", ""), font_size=12))
  43.                     box.add_widget(Label(text=", ".join([m["name"] for m in pdata.get("moves", [])]), font_size=10))
  44.                     grid.add_widget(box)
  45.         except Exception as e:
  46.             grid.add_widget(Label(text=f"Failed to load usage data: {e}"))
  47.  
  48.         scroll.add_widget(grid)
  49.         layout.add_widget(scroll)
  50.         self.add_widget(layout)
  51.  
  52.  
  53. class MainMenuScreen(Screen):
  54.     def __init__(self, **kwargs):
  55.         super().__init__(**kwargs)
  56.         layout = BoxLayout(orientation='vertical')
  57.         self.status_label = Label(text="Welcome to the Pokémon Team Builder")
  58.         layout.add_widget(self.status_label)
  59.  
  60.         team_builder_btn = Button(text="Team Builder")
  61.         team_builder_btn.bind(on_release=lambda x: self.goto("team_builder"))
  62.         layout.add_widget(team_builder_btn)
  63.  
  64.         usage_btn = Button(text="Usage Stats")
  65.         usage_btn.bind(on_release=lambda x: self.goto("usage_stats"))
  66.         layout.add_widget(usage_btn)
  67.  
  68.         load_team_btn = Button(text="Load Team")
  69.         load_team_btn.bind(on_release=lambda x: self.goto("load_team"))
  70.         layout.add_widget(load_team_btn)
  71.  
  72.         self.add_widget(layout)
  73.  
  74.     def goto(self, name):
  75.         self.manager.current = name
  76.      
  77.       load_team_btn = Button(text="Load Team")
  78.       load_team_btn.bind(on_release=lambda x: self.goto("load_team"))
  79.       layout.add_widget(load_team_btn)
  80.  
  81.  
  82. class PokemonTeamBuilderApp(App):
  83.     def load_team_into_editor(self, team_data):
  84.         screen = self.root.get_screen("team_builder")
  85.         screen.load_team(team_data)
  86.  
  87.     def build(self):
  88.         sm = ScreenManager(transition=FadeTransition())
  89.         sm.parent_app = self
  90.         sm.add_widget(SplashScreen(name="splash"))
  91.         sm.add_widget(MainMenuScreen(name="main_menu"))
  92.         sm.add_widget(TeamBuilderScreen(name="team_builder"))
  93.         sm.add_widget(UsageStatsScreen(name="usage_stats"))
  94.         sm.add_widget(LoadTeamScreen(name="load_team"))
  95.         sm.current = "splash"
  96.         return sm
  97.  
  98. if __name__ == '__main__':
  99.     PokemonTeamBuilderApp().run()
  100.  
Tags: #Pokemon
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement