Search code examples
pythontkintercomboboxwindowcomputer-science

Tkinter Transfering Data to another Window


I've been working on transferring data into another window when the user types their info into the first box and then the info appears on the second window. I need help on using combobox to get it to the second window as I have it in the code here. When I select "male", it doesn't show up in the second window.

from tkinter import *
from tkinter import ttk


def submit(*args):
  mainframe1.destroy()
  full_name.set(last.get() + ", " + first.get() + " " + middle.get())
  full_address.set(address.get() + "\n" + city.get() + " , " + state.get() + "\n" + zipcode.get())
  mainframe2.grid(column=0, row=0)


root = Tk()
root.title("Basic Information Form")
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

mainframe1 = ttk.Frame(root, padding="5 5 5 5")
mainframe2 = ttk.Frame(root, padding="5 5 5 5")

first = StringVar()
middle = StringVar()
last = StringVar()
full_name = StringVar()
gender = StringVar()
phone_number = StringVar()
dob = StringVar()
address = StringVar()
city = StringVar()
state = StringVar()
full_address = StringVar()
zipcode = StringVar()
ttk.Label(mainframe1, text="First name: ").grid(column=0, row=0)
ttk.Label(mainframe1, text="Middle name: ").grid(column=0, row=1)
ttk.Label(mainframe1, text="Last Name: ").grid(column=0, row=2)
ttk.Label(mainframe1, text="Gender: ").grid(column=0, row=3)
ttk.Label(mainframe1, text="Date of Birth:").grid(column=0, row=4)
ttk.Label(mainframe1, text="Phone Number: ").grid(column=0, row=5)
ttk.Label(mainframe1, text="Address: ").grid(column=0, row=6)
ttk.Label(mainframe1, text="City: ").grid(column=0, row=7)
ttk.Label(mainframe1, text="State: ").grid(column=0, row=8)
ttk.Label(mainframe1, text="Zip Code: ").grid(column=0, row=9)
gender = ttk.Combobox(mainframe1, width=10, textvariable=gender, values=('Male', 'Female'))
gender.grid(row=3, column=1)

first_entry = ttk.Entry(mainframe1, width=20, textvariable=first)
middle_entry = ttk.Entry(mainframe1, width=20, textvariable=middle)
last_entry = ttk.Entry(mainframe1, width=20, textvariable=last)
dob_entry = ttk.Entry(mainframe1, width=20, textvariable= dob)
gender_entry = ttk.Entry(mainframe1, width=20, textvariable=phone_number)
address_entry = ttk.Entry(mainframe1, width=20, textvariable=address)
city_entry = ttk.Entry(mainframe1, width=20, textvariable=city)
state_entry = ttk.Entry(mainframe1, width=20, textvariable=state)
zipcode_entry = ttk.Entry(mainframe1, width=20, textvariable=zipcode)
first_entry.grid(column=1, row=0)
middle_entry.grid(column=1, row=1)
last_entry.grid(column=1, row=2)
dob_entry.grid(column=1, row=4)
gender_entry.grid(column=1, row=5)
address_entry.grid(column=1, row=6)
city_entry.grid(column=1, row=7)
state_entry.grid(column=1, row=8)
zipcode_entry.grid(column=1, row=9)

button = ttk.Button(mainframe1, text="Submit", command=submit)
button.grid(column=2, row=10)

ttk.Label(mainframe2, text="Name: ").grid(column=0, row=0)
ttk.Label(mainframe2, textvariable=full_name).grid(column=1, row=0)
ttk.Label(mainframe2, text="Date of Birth: ").grid(column=0, row=1)
ttk.Label(mainframe2, textvariable=dob).grid(column=1, row=1)
ttk.Label(mainframe2, text="Gender:").grid(column=0, row=2)
ttk.Label(mainframe2, textvariable=gender).grid(column=1, row=2)
ttk.Label(mainframe2, text="Phone Number:").grid(column=0, row= 3)
ttk.Label(mainframe2, textvariable=phone_number).grid(column=1, row=3)
ttk.Label(mainframe2, text="Address: ").grid(column=0, row=4)
ttk.Label(mainframe2, textvariable=full_address).grid(column=1, row=4)

mainframe1.grid(column=0, row=0)

root.mainloop()

Solution

  • You used same name gender for the Combobox widget and StringVar. Change the name for Combobox widget to gender_cb:

    gender_cb = ttk.Combobox(mainframe1, width=10, textvariable=gender, values=('Male', 'Female'))
    gender_cb.grid(row=3, column=1)