forked from CCT211Project/Term_Project
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Yash
committed
Apr 7, 2021
1 parent
b9aa6ec
commit 0f06272
Showing
3 changed files
with
176 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,98 +1,28 @@ | ||
from tkinter import * | ||
from tkinter import ttk | ||
import tkinter as tk | ||
from Pages import PageOne | ||
from apicollect import Overwatch | ||
|
||
|
||
class FirstGUI: | ||
class FirstGUI(tk.Tk): | ||
""" | ||
This is pertaining to Overwatch only, Remember that in the apicollect.py file, | ||
Overwatch API requires you to put in platform, region and battle id of the player. | ||
""" | ||
def __init__(self, parent): | ||
self.parent = parent | ||
self.game = None | ||
|
||
self.frame = Frame(self.parent) | ||
self.labelSelect = Label(self.frame, text='Choose a game to find stats to compare between multiple players') | ||
self.labelSelect.grid(row=0, column=1) | ||
self.game_chosen = StringVar() | ||
# Create a dropdown menu | ||
self.game_choices = ttk.Combobox(self.frame, state="readonly", textvariable=self.game_chosen, width=30) | ||
# Default text shown | ||
self.game_choices.set("Select a game") | ||
# Possible games to choose from: Cold war and WoW are examples for now | ||
self.game_choices['values'] = ['Overwatch', 'Fortnite', 'Cold War', 'WoW'] | ||
self.game_choices.grid(row=1, column=1) | ||
|
||
""" | ||
Idea: Maybe we can use validate commands for the entries | ||
""" | ||
# Entry for user to put in platform | ||
|
||
# platform_label_text = StringVar() | ||
# platform_label_text.set("Enter game platform (pc, etc)") | ||
# self.label1 = Label(app, textvariable=platform_label_text, height=4) | ||
# self.label1.grid(row=2, column=0) | ||
|
||
platform_id = StringVar() | ||
self.first_gamer_plat = Entry(self.frame, textvariable=platform_id) | ||
self.first_gamer_plat.grid(row=2, column=1) | ||
|
||
# Entry for user to put in region | ||
|
||
# region_label_text = StringVar() | ||
# region_label_text.set("Enter game region (us, eu, asia)") | ||
# self.label2 = Label(app, textvariable=region_label_text, height=4) | ||
# self.label2.grid(row=3, column=0) | ||
|
||
region_id = StringVar() | ||
self.first_gamer_reg = Entry(self.frame, textvariable=region_id) | ||
self.first_gamer_reg.grid(row=3, column=1) | ||
|
||
# Entry for user to put in battle_id | ||
|
||
# battleID_label_text = StringVar() | ||
# battleID_label_text.set("Your battlenet tag, replacing the # with a -") | ||
# self.label3 = Label(app, textvariable=battleID_label_text, height=4) | ||
# self.label3.grid(row=3, column=0) | ||
|
||
battle_id = StringVar() | ||
self.first_gamer_batt = Entry(self.frame, textvariable=battle_id) | ||
self.first_gamer_batt.grid(row=4, column=1) | ||
|
||
# Submit Button | ||
self.sub_btn = Button(self.frame, text='Submit', command=self.submit) | ||
self.sub_btn.grid(row=5, column=3) | ||
|
||
self.frame.pack() | ||
# If a game option is selected call the callbackf function | ||
self.game_choices.bind("<<ComboboxSelected>>", self.callback) | ||
|
||
def callback(self, event_object): | ||
self.game = event_object.widget.get() | ||
def __init__(self): | ||
tk.Tk.__init__(self) | ||
self._frame = None | ||
self.change_frame(PageOne) | ||
|
||
def submit(self): | ||
""" | ||
Retrieve the values from each entry and check if they are valid. | ||
""" | ||
platform = self.first_gamer_plat.get() | ||
region = self.first_gamer_reg.get() | ||
battle_tag = self.first_gamer_batt.get() | ||
def change_frame(self, change_frame): | ||
new_frame = change_frame(self) | ||
if self._frame is not None: | ||
self._frame.destroy() | ||
self._frame = new_frame | ||
self._frame.pack() | ||
|
||
try: | ||
o = Overwatch(platform, region, battle_tag) | ||
if o.result: | ||
# Simple check to see if values are valid | ||
print(o.test_get_player_info()) | ||
else: | ||
print("Invalid Profile") | ||
except: | ||
# Need to likely change this try/except. Debugging required | ||
print("Invalid Profile") | ||
|
||
|
||
app = Tk() | ||
gui = FirstGUI(app) | ||
app.title("Game App") | ||
app.geometry('500x600') | ||
app.mainloop() | ||
if __name__ == "__main__": | ||
app = FirstGUI() | ||
app.mainloop() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
from tkinter import * | ||
import tkinter as tk | ||
from tkinter import ttk | ||
from apicollect import Overwatch | ||
""" | ||
Sources: | ||
https://www.youtube.com/watch?v=YTqDYmfccQU | ||
https://www.delftstack.com/howto/python-tkinter/how-to-switch-frames-in-tkinter/ | ||
https://www.youtube.com/watch?v=7JoMTQgdxg0 | ||
""" | ||
|
||
|
||
|
||
|
||
|
||
class PageOne(tk.Frame): | ||
def __init__(self, parent): | ||
tk.Frame.__init__(self, parent) | ||
|
||
self.game = None | ||
self.labelSelect = Label(self, text='Choose a game to find stats to compare between multiple players') | ||
self.labelSelect.grid(row=0, column=1) | ||
self.game_chosen = StringVar() | ||
# Create a dropdown menu | ||
self.game_choices = ttk.Combobox(self, state="readonly", textvariable=self.game_chosen, width=30) | ||
# Default text shown | ||
self.game_choices.set("Select a game") | ||
# Possible games to choose from: Cold war and WoW are examples for now | ||
self.game_choices['values'] = ['Overwatch', 'Fortnite', 'Cold War', 'WoW'] | ||
self.game_choices.grid(row=1, column=1) | ||
|
||
""" | ||
Idea: Maybe we can use validate commands for the entries | ||
""" | ||
|
||
# Submit Button: we will need to change this for different games entered | ||
self.sub_btn = Button(self, text='Submit', command=lambda: parent.change_frame(PageTwo)).grid(row=2, column=1) | ||
# self.sub_btn.grid(row=5, column=3) | ||
|
||
self.pack() | ||
# If a game option is selected call the callback function | ||
self.game_choices.bind("<<ComboboxSelected>>", self.callback) | ||
|
||
|
||
def callback(self, event_object): | ||
self.game = event_object.widget.get() | ||
|
||
class PageTwo(tk.Frame): | ||
""" | ||
For Overwatch | ||
""" | ||
|
||
def __init__(self, parent): | ||
tk.Frame.__init__(self, parent) | ||
tk.Label(self, text="Input the player").grid(row=1, column = 0, columnspan = 2) | ||
self.num_players = 0 | ||
# self.all_players = [] | ||
|
||
self.ow_tree = ttk.Treeview(self) | ||
#Create the columns | ||
self.ow_tree['columns'] = ("Battle Tag", "Platform", "Region") | ||
self.ow_tree.column("#0", width=120, minwidth = 25) | ||
self.ow_tree.column("Battle Tag", anchor=W, width=120) | ||
self.ow_tree.column("Platform", anchor=CENTER, width=80) | ||
self.ow_tree.column("Region", anchor = W, width = 60) | ||
#Create the headings | ||
self.ow_tree.heading("#0", text="Label", anchor=W) | ||
self.ow_tree.heading("Battle Tag", text="Battle Tag", anchor=CENTER) | ||
self.ow_tree.heading("Platform", text="Platform", anchor=W) | ||
self.ow_tree.heading("Region", text="Region", anchor=CENTER) | ||
|
||
#Add Data | ||
# ow_tree.insert('', index='end', iid=0, text="Player", values=("Yash", "pc", "us")) | ||
|
||
self.ow_tree.grid(row=0, column=0) | ||
|
||
|
||
self.platform_chosen = StringVar() | ||
self.region_chosen = StringVar() | ||
self.battletag_chosen = StringVar() | ||
|
||
tk.Label(self, text="Player 1").grid(row=2, column=0, columnspan = 2) | ||
|
||
tk.Label(self, text="Platform:").grid(row=3, column=0, columnspan = 2) | ||
# Create a dropdown menu | ||
self.platform_choices = ttk.Combobox(self, state="readonly", textvariable=self.platform_chosen, width=30) | ||
# Default text shown | ||
self.platform_choices.set("Select a platform") | ||
# Possible platforms to choose | ||
self.platform_choices['values'] = ['pc', 'xbl', 'psn'] | ||
self.platform_choices.grid(row=3, column=1) | ||
|
||
tk.Label(self, text="Region:").grid(row=4, column=0, columnspan = 2) | ||
# Create a dropdown menu | ||
self.region_choices = ttk.Combobox(self, state="readonly", textvariable=self.region_chosen, width=30) | ||
# Default text shown | ||
self.region_choices.set("Select a region") | ||
# Possible regions to choose | ||
self.region_choices['values'] = ['us', 'eu', 'kr', 'cn', 'global'] | ||
self.region_choices.grid(row=4, column=1) | ||
|
||
tk.Label(self, text="Battle Tag:").grid(row=5, column=0, columnspan = 2) | ||
|
||
self.battle_id = StringVar() | ||
self.gamer_tag = Entry(self, textvariable=self.battle_id) | ||
self.gamer_tag.grid(row=5, column=1) | ||
|
||
|
||
self.add_btn = Button(self, text='Add Player', command= self.add_player) | ||
self.add_btn.grid(row=6, column=4) | ||
self.add_btn = Button(self, text='Clear', command=self.clear) | ||
self.add_btn.grid(row=7, column=4) | ||
self.add_btn = Button(self, text='Remove Player(s)', command=self.remove_players) | ||
self.add_btn.grid(row=8, column=4) | ||
self.back_btn = Button(self, text='Go back', command=lambda: parent.change_frame(PageOne)).grid(row=9, column=4) | ||
self.sub_btn = Button(self, text='Submit', command=lambda: parent.change_frame(PageThree)).grid(row=10, column=4) | ||
|
||
def add_player(self): | ||
|
||
try: | ||
o = Overwatch(self.platform_chosen.get(), self.region_chosen.get(), self.battle_id.get()) | ||
if o.result: | ||
self.num_players += 1 | ||
self.ow_tree.insert('', index='end', iid=self.num_players, text="Player {}".format(self.num_players), | ||
values=(self.battle_id.get(), self.platform_chosen.get(), self.region_chosen.get())) | ||
|
||
self.gamer_tag.delete(0, END) | ||
self.platform_choices.set('Select a platform') | ||
self.region_choices.set('Select a region') | ||
else: | ||
print("Invalid Profile") | ||
|
||
except: | ||
print("Invalid Profile") | ||
|
||
|
||
def clear(self): | ||
for player in self.ow_tree.get_children(): | ||
self.ow_tree.delete(player) | ||
|
||
def remove_players(self): | ||
t = self.ow_tree.selection() | ||
for player in t: | ||
self.ow_tree.delete(player) | ||
|
||
|
||
class PageThree(tk.Frame): | ||
""" | ||
The Third page | ||
""" | ||
|
||
def __init__(self, parent): | ||
tk.Frame.__init__(self, parent) | ||
tk.Label(self, text="Input the player").grid(row=1, column=0, columnspan=2) | ||
|
||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters