Jump to content

I have created Frame with Entry widget to ask user to input his Username and select a team, that he want to join in and also I have created an OpenMenu Widget with 4 teams that user can join.

I want to know, how to assign list to OpenMenu variations as a list. For example: Selection "Team 1" = "team1Members" etc.

Also I want to know, how to assign data from Entry Widget to appropriate list. For example, if user have selected "Team 1", his username will append to "team1Members" list.

My code:

<

from tkinter import *
import tkinter.ttk as ttk

team1Members = []
team2Members = []
team3Members = []
team4Members = []


class CollegeApp(Tk):
    def __init__(self):
        Tk.__init__(self)
        container = ttk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        self.frames = {}
        for F in (StartPage, selectionPage, TeamsPage):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame(StartPage)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()


class StartPage(ttk.Frame):
    def __init__(self, parent, controller):
        self.controller = controller
        ttk.Frame.__init__(self, parent)
        self.startMenu()

    def startMenu(self):
        heading = Label(self, text="College Tournament Points\n Count Software",
                        font=('Arial', 25))
        heading.grid(row=0, column=0, columnspan=2, padx=240, pady=40)

        start_Btn = Button(self, text="Start", font="Arial 16", width=8,
                           command=lambda: self.controller.show_frame(selectionPage))
        start_Btn.grid(row=1, column=0, padx=30, pady=5)

        exit_Btn = Button(self, text="EXIT", font="Arial 16", width=8,
                          command=self.controller.destroy)
        exit_Btn.grid(row=1, column=1, padx=30, pady=5)

    def starting_Program(self):
        pass


class selectionPage(ttk.Frame):
    def __init__(self, parent, controller):
        self.controller = controller
        ttk.Frame.__init__(self, parent)
        self.teamSelect()

    def teamSelect(self):
        heading = Label(self, text="Become a member of a Team",
                        font=('Arial', 25))
        heading.grid(row=0, column=0, columnspan=2, padx=200, pady=40)

        teams = Button(self, text="Teams", font="Arial 24", width=15,
                       command=lambda: self.controller.show_frame(TeamsPage))
        teams.grid(row=1, column=0, padx=270, pady=5)

class TeamsPage(ttk.Frame):

    def __init__(self, parent, controller):
        self.controller = controller
        ttk.Frame.__init__(self, parent)
        self.userEntry()

    def userEntry(self):
        headingTest = Label(self, text="Enter your Username:", font="Arial 20")
        headingTest.grid(row=0, column=0, pady=0)

        usernameEnter = Entry(self, width=40)
        usernameEnter.grid(row=0, column=1, padx=2, pady=10)

        UserName = StringVar(self)
        UserName.set("Team1")

        AdditionalText = Label(self, text="Please select a team:", font="Arial 18") 
        AdditionalText.grid(row=1, column=0, sticky=W, pady=15)

        teamSelection = OptionMenu(self, UserName, "Team1", "Team2", "Team3", "Team 4") # How to link those variations to team list? For example: Team 1 = team1Members?
        teamSelection.grid(row=1, column=1, sticky=W)

        confirmBtn = Button(self, text="Submit", font="Arial 16",
                            command=()) # Command to Save username in teamXMembers list. Depends on the user selection 
        confirmBtn.config(height=4, width=12)
        confirmBtn.grid(row=2, column=2, sticky=E, padx=65, pady=300)

        


if __name__ == '__main__':
    app = CollegeApp()
    app.geometry("800x500")
    app.title('Points Counter')
    app.mainloop()


>

 

 

 

 

Screenshot 2021-03-09 at 13.59.54.png

Link to post
Share on other sites

I'm not a python user so maybe this is wrong but if that optionsmenu doesn't have methods to add/edit/remove options in the list after creation, you could always kill it (I think there's a destroy() method) and re-create it with your new options (and don't forget to place it on the form)

 

A quick google search gave me this, where it seems like they're converting an array/list to a string variable, so they can pass it to the optionsmenu so maybe you can use this to dynamically create the drop down : https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/optionmenu.html

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×