微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Tkinter 将数据传输到另一个窗口

如何解决Tkinter 将数据传输到另一个窗口

用户在第一个框中键入信息时,我一直致力于将数据传输到另一个窗口,然后信息出现在第二个窗口中。我需要有关使用组合框将其转到第二个窗口的帮助,因为我在此处的代码中有它。当我选择“男性”时,它不会显示在第二个窗口中。

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,textvariable=middle)
last_entry = ttk.Entry(mainframe1,textvariable=last)
dob_entry = ttk.Entry(mainframe1,textvariable= dob)
gender_entry = ttk.Entry(mainframe1,textvariable=phone_number)
address_entry = ttk.Entry(mainframe1,textvariable=address)
city_entry = ttk.Entry(mainframe1,textvariable=city)
state_entry = ttk.Entry(mainframe1,textvariable=state)
zipcode_entry = ttk.Entry(mainframe1,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,text="Date of Birth: ").grid(column=0,row=1)
ttk.Label(mainframe2,textvariable=dob).grid(column=1,text="Gender:").grid(column=0,row=2)
ttk.Label(mainframe2,textvariable=gender).grid(column=1,text="Phone Number:").grid(column=0,row= 3)
ttk.Label(mainframe2,textvariable=phone_number).grid(column=1,row=3)
ttk.Label(mainframe2,row=4)
ttk.Label(mainframe2,textvariable=full_address).grid(column=1,row=4)

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

root.mainloop()

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。