Python TkInter:如何使对象显示在第二个窗口而不是第一个窗口上?

Python TkInter:如何使对象显示在第二个窗口而不是第一个窗口上?,python,tkinter,screenshot,Python,Tkinter,Screenshot,你问题的字面答案是告诉小部件进入哪个窗口 代码中有两个问题。首先,您正在创建两个Tk实例。您应该始终明确地创建一个。如果需要多个窗口,则第二个和后续窗口需要是Toplevel的实例。您还需要准确地调用mainloop一次 第二个问题是您没有指定每个小部件的父部件或主部件。否则,tkinter将默认为根窗口。如果希望菜单标签成为第二个较小窗口的一部分,只需明确说明: from tkinter import * def new_member(): #This is for the lar

你问题的字面答案是告诉小部件进入哪个窗口

代码中有两个问题。首先,您正在创建两个Tk实例。您应该始终明确地创建一个。如果需要多个窗口,则第二个和后续窗口需要是Toplevel的实例。您还需要准确地调用mainloop一次

第二个问题是您没有指定每个小部件的父部件或主部件。否则,tkinter将默认为根窗口。如果希望菜单标签成为第二个较小窗口的一部分,只需明确说明:

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()

不要两次调用root,但要为函数使用Toplevel,并指定要将小部件放入其中的窗口。

切勿在同一应用程序中创建两个root窗口xx=Tk。对根窗口以外的窗口使用顶级。但这不是你看到的原因。这是一个育儿问题。这个答案的缩进被打破了。
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()