Tkinter 将数据传输到另一个 Window

Tkinter Transfering Data to another Window

我一直致力于将数据传输到另一个 window,当用户在第一个框中输入他们的信息然后信息出现在第二个 window 中时。我需要有关使用组合框将其转到第二个 window 的帮助,因为我在此处的代码中有它。当我select“男性”时,它不会出现在第二个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()

您为 Combobox 小部件和 StringVar 使用了相同的名称 gender。将 Combobox 小部件的名称更改为 gender_cb:

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