TkInter:如何让对象出现在我的第二个 window 而不是第一个?
TkInter: how can I make objects appear on my second window rather than the first?
from tkinter import *
def new_member():
#This is for the larger window
new_member_window = Tk()
new_member_window.title("Add a new member")
new_member_window.geometry("500x500")
#NAME ENTRY
name_entry_label = Label(text = "Enter a new member's name:")
name_entry_label.place(x=7,y=-25,width=80,height=83)
name_box = Entry(text="")
name_box.place(x=100,y=10,width=100,height=15)
#AGE ENTRY
age_entry_label = Label(text = "Enter their age:")
age_entry_label.place(x=7,y=10,width=80,height=83)
age_box = Entry(text="")
age_box.place(x=100,y=45,width=100,height=15)
#EMAIL ADRESS ENTRY
email_entry_label = Label(text = "Enter their email:")
email_entry_label.place(x=10,y=45,width=80,height=83)
age_box = Entry(text="")
age_box.place(x=100,y=80,width=100,height=15)
new_member_window.mainloop()
#All below is for the smaller window
menu_window = Tk()
menu_window.title("Sports Club Membership")
menu_window.geometry("264x164")
menu_label=Label(text="Main menu",font=("Helvetica",20,"underline","bold"))
menu_label.place(x=10,y=10)
#ADD A NEW MEMBER BUTTON
menu_new_member_button=Button(text="Add a new member",command=new_member)
menu_new_member_button.place(x=10,y=70,width=120,height=20)
#SEARCH MEMBER JOINING DATES
search_member_join_dates_button=Button(text="Search member joining dates")#,command=member_joining_dates)
search_member_join_dates_button.place(x=10,y=100,width=170,height=20)
#SEARCH FOR OVERDUE MEMBERSHIP PAYMENTS
search_overdue_membership_payments_button=Button(text="Search for overdue membership payments")#,command=overdue_membership_payments)
search_overdue_membership_payments_button.place(x=10,y=130,width=235,height=20)
menu_window.mainloop()
Here is a screenshot of my two windows. The smaller cluttered window is a window where the user clicks on the first button in order to get the second window to appear. The larger window should have various objects on it, but instead these are all placed added to the smaller window.
您问题的字面答案是 "tell the widget which window to go in"。
您的代码中有两个问题。首先是您正在创建 Tk
的两个实例。您应该始终明确地创建一个。如果您需要多个 window,则第二个和后续 windows 需要是 Toplevel
的实例。您还需要恰好调用 mainloop
一次。
第二个问题是您没有指定每个小部件的父级或母级。如果不这样做,tkinter 将默认为根 window。如果您希望 menu_label
成为第二个 "smaller window" 的一部分,您只需明确说明:
menu_window = Toplevel()
menu_label=Label(menu_window, ...)
from tkinter import *
def new_member():
#This is for the larger window
new_member_window = Toplevel()
new_member_window.title("Add a new member")
new_member_window.geometry("500x500")
#NAME ENTRY
name_entry_label = Label(new_member_window, text = "Enter a new member's name:")
name_entry_label.place(x=7,y=-25,width=80,height=83)
name_box = Entry(new_member_window, text="")
name_box.place(x=100,y=10,width=100,height=15)
#AGE ENTRY
age_entry_label = Label(new_member_window, text = "Enter their age:")
age_entry_label.place(x=7,y=10,width=80,height=83)
age_box = Entry(new_member_window,text="")
age_box.place(x=100,y=45,width=100,height=15)
#EMAIL ADRESS ENTRY
email_entry_label = Label(new_member_window, text = "Enter their email:")
email_entry_label.place(x=10,y=45,width=80,height=83)
age_box = Entry(new_member_window, text="")
age_box.place(x=100,y=80,width=100,height=15)
#All below is for the smaller window
menu_window = Tk()
menu_window.title("Sports Club Membership")
menu_window.geometry("264x164")
menu_label=Label(text="Main menu",font=("Helvetica",20,"underline","bold"))
menu_label.place(x=10,y=10)
#ADD A NEW MEMBER BUTTON
menu_new_member_button=Button(text="Add a new member",command=new_member)
menu_new_member_button.place(x=10,y=70,width=120,height=20)
#SEARCH MEMBER JOINING DATES
search_member_join_dates_button=Button(text="Search member joining
dates")#,command=member_joining_dates)
search_member_join_dates_button.place(x=10,y=100,width=170,height=20)
#SEARCH FOR OVERDUE MEMBERSHIP PAYMENTS
search_overdue_membership_payments_button=Button(text="Search for overdue
membership payments")#,command=overdue_membership_payments)
search_overdue_membership_payments_button.place(x=10,y=130,width=235,height=20)
menu_window.mainloop()
不要调用 root 两次,而是将 Toplevel 用于您的函数,并指定 window 您想要将小部件放入其中。
from tkinter import *
def new_member():
#This is for the larger window
new_member_window = Tk()
new_member_window.title("Add a new member")
new_member_window.geometry("500x500")
#NAME ENTRY
name_entry_label = Label(text = "Enter a new member's name:")
name_entry_label.place(x=7,y=-25,width=80,height=83)
name_box = Entry(text="")
name_box.place(x=100,y=10,width=100,height=15)
#AGE ENTRY
age_entry_label = Label(text = "Enter their age:")
age_entry_label.place(x=7,y=10,width=80,height=83)
age_box = Entry(text="")
age_box.place(x=100,y=45,width=100,height=15)
#EMAIL ADRESS ENTRY
email_entry_label = Label(text = "Enter their email:")
email_entry_label.place(x=10,y=45,width=80,height=83)
age_box = Entry(text="")
age_box.place(x=100,y=80,width=100,height=15)
new_member_window.mainloop()
#All below is for the smaller window
menu_window = Tk()
menu_window.title("Sports Club Membership")
menu_window.geometry("264x164")
menu_label=Label(text="Main menu",font=("Helvetica",20,"underline","bold"))
menu_label.place(x=10,y=10)
#ADD A NEW MEMBER BUTTON
menu_new_member_button=Button(text="Add a new member",command=new_member)
menu_new_member_button.place(x=10,y=70,width=120,height=20)
#SEARCH MEMBER JOINING DATES
search_member_join_dates_button=Button(text="Search member joining dates")#,command=member_joining_dates)
search_member_join_dates_button.place(x=10,y=100,width=170,height=20)
#SEARCH FOR OVERDUE MEMBERSHIP PAYMENTS
search_overdue_membership_payments_button=Button(text="Search for overdue membership payments")#,command=overdue_membership_payments)
search_overdue_membership_payments_button.place(x=10,y=130,width=235,height=20)
menu_window.mainloop()
Here is a screenshot of my two windows. The smaller cluttered window is a window where the user clicks on the first button in order to get the second window to appear. The larger window should have various objects on it, but instead these are all placed added to the smaller window.
您问题的字面答案是 "tell the widget which window to go in"。
您的代码中有两个问题。首先是您正在创建 Tk
的两个实例。您应该始终明确地创建一个。如果您需要多个 window,则第二个和后续 windows 需要是 Toplevel
的实例。您还需要恰好调用 mainloop
一次。
第二个问题是您没有指定每个小部件的父级或母级。如果不这样做,tkinter 将默认为根 window。如果您希望 menu_label
成为第二个 "smaller window" 的一部分,您只需明确说明:
menu_window = Toplevel()
menu_label=Label(menu_window, ...)
from tkinter import *
def new_member():
#This is for the larger window
new_member_window = Toplevel()
new_member_window.title("Add a new member")
new_member_window.geometry("500x500")
#NAME ENTRY
name_entry_label = Label(new_member_window, text = "Enter a new member's name:")
name_entry_label.place(x=7,y=-25,width=80,height=83)
name_box = Entry(new_member_window, text="")
name_box.place(x=100,y=10,width=100,height=15)
#AGE ENTRY
age_entry_label = Label(new_member_window, text = "Enter their age:")
age_entry_label.place(x=7,y=10,width=80,height=83)
age_box = Entry(new_member_window,text="")
age_box.place(x=100,y=45,width=100,height=15)
#EMAIL ADRESS ENTRY
email_entry_label = Label(new_member_window, text = "Enter their email:")
email_entry_label.place(x=10,y=45,width=80,height=83)
age_box = Entry(new_member_window, text="")
age_box.place(x=100,y=80,width=100,height=15)
#All below is for the smaller window
menu_window = Tk()
menu_window.title("Sports Club Membership")
menu_window.geometry("264x164")
menu_label=Label(text="Main menu",font=("Helvetica",20,"underline","bold"))
menu_label.place(x=10,y=10)
#ADD A NEW MEMBER BUTTON
menu_new_member_button=Button(text="Add a new member",command=new_member)
menu_new_member_button.place(x=10,y=70,width=120,height=20)
#SEARCH MEMBER JOINING DATES
search_member_join_dates_button=Button(text="Search member joining
dates")#,command=member_joining_dates)
search_member_join_dates_button.place(x=10,y=100,width=170,height=20)
#SEARCH FOR OVERDUE MEMBERSHIP PAYMENTS
search_overdue_membership_payments_button=Button(text="Search for overdue
membership payments")#,command=overdue_membership_payments)
search_overdue_membership_payments_button.place(x=10,y=130,width=235,height=20)
menu_window.mainloop()
不要调用 root 两次,而是将 Toplevel 用于您的函数,并指定 window 您想要将小部件放入其中。