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