Python tkinter顶层窗口内的输入框

Python tkinter顶层窗口内的输入框,python,tkinter,Python,Tkinter,我已经编写了一个代码来显示tkinter中顶级窗口中的Entry小部件,但在运行它时它并没有显示任何内容。 下面是我调用顶级窗口的代码: #file: app.py # enter new racer btnNewRacer = Button(app, text = "Enter New Racer", style = 'W.TButton', command = EnterRacer) btnNewRacer.grid(row = 0, column = 0, pady

我已经编写了一个代码来显示tkinter中顶级窗口中的Entry小部件,但在运行它时它并没有显示任何内容。 下面是我调用顶级窗口的代码:

#file: app.py

# enter new racer
btnNewRacer = Button(app, text = "Enter New Racer", style = 'W.TButton', command = EnterRacer)
btnNewRacer.grid(row = 0, column = 0, pady = 50, padx = 50)
这是我为Entry widget编写的代码:

#file: new_racer.py

def EnterRacer(): 
      
    # Toplevel object which will  
    # be treated as a new window 
    racerWindow = Toplevel() 
    racerWindow['background']='#2A3132'
  
    # sets the title of the 
    # Toplevel widget 
    racerWindow.title("Enter New Racer") 
  
    # sets the geometry of toplevel 
    racerWindow.geometry("700x500") 
  
    # A Label widget to show in toplevel 
    Label(racerWindow, text ="Enter new racer window").pack()
    Label(racerWindow, text="First Name").pack()
    Label(racerWindow, text="Last Name").pack().grid(row=5)

    entry_1 = Entry(racerWindow)
    entry_1.pack()
    entry_1.grid(row=5)

当我运行app.py并单击“输入新赛车手”按钮时,我没有看到任何输入小部件。有人能帮忙吗?谢谢。

这里的问题是,您不能将
.pack()
.grid()
组合使用。您只需使用其中一个

您可以将功能更改为:

用于
.pack()

    # Toplevel object which will  
    # be treated as a new window 
    racerWindow = Toplevel() 
    racerWindow['background']='#2A3132'

    # sets the title of the 
    # Toplevel widget 
    racerWindow.title("Enter New Racer") 

    # sets the geometry of toplevel 
    racerWindow.geometry("700x500") 

    # A Label widget to show in toplevel 
    Label(racerWindow, text ="Enter new racer window").pack()
    Label(racerWindow, text="First Name").pack()
    Label(racerWindow, text="Last Name").pack()

    entry_1 = Entry(racerWindow)
    entry_1.pack()
def EnterRacer():
    # Toplevel object which will  
    # be treated as a new window 
    racerWindow = Toplevel() 
    racerWindow['background']='#2A3132'

    # sets the title of the 
    # Toplevel widget 
    racerWindow.title("Enter New Racer") 

    # sets the geometry of toplevel 
    racerWindow.geometry("700x500") 

    # A Label widget to show in toplevel 
    Label(racerWindow, text ="Enter new racer window").grid(row=0,column=0)
    Label(racerWindow, text="First Name").grid(row=0,column=1)
    Label(racerWindow, text="Last Name").grid(row=0,column=2)

    entry_1 = Entry(racerWindow)
    entry_1.grid(row=1,column=0,columnspan=3,sticky=E+W)
用于
.grid()

    # Toplevel object which will  
    # be treated as a new window 
    racerWindow = Toplevel() 
    racerWindow['background']='#2A3132'

    # sets the title of the 
    # Toplevel widget 
    racerWindow.title("Enter New Racer") 

    # sets the geometry of toplevel 
    racerWindow.geometry("700x500") 

    # A Label widget to show in toplevel 
    Label(racerWindow, text ="Enter new racer window").pack()
    Label(racerWindow, text="First Name").pack()
    Label(racerWindow, text="Last Name").pack()

    entry_1 = Entry(racerWindow)
    entry_1.pack()
def EnterRacer():
    # Toplevel object which will  
    # be treated as a new window 
    racerWindow = Toplevel() 
    racerWindow['background']='#2A3132'

    # sets the title of the 
    # Toplevel widget 
    racerWindow.title("Enter New Racer") 

    # sets the geometry of toplevel 
    racerWindow.geometry("700x500") 

    # A Label widget to show in toplevel 
    Label(racerWindow, text ="Enter new racer window").grid(row=0,column=0)
    Label(racerWindow, text="First Name").grid(row=0,column=1)
    Label(racerWindow, text="Last Name").grid(row=0,column=2)

    entry_1 = Entry(racerWindow)
    entry_1.grid(row=1,column=0,columnspan=3,sticky=E+W)
这只是网格化的一种方式,您可以通过更改行和列参数来使用自己的方式。如果有任何疑问,请告诉我:D


干杯

我不知道这是否正确,但我从未见过
.pack().grid()
它有什么作用?你是在包装它,然后把它网格化,就做一个?如果我没有错的话,你也没有看到你的“姓氏”标签?这可能是个错误,但我可以看到所有的三个标签。只有条目小部件未显示@CoolCloudI立即获得了
AttributeError:“非类型”对象没有属性“网格”
,您正在混合
pack
grid
,并尝试在已打包的对象上执行
grid
。您想放置它还是使用网格?还是打包?错误:
AttributeError:'NoneType'对象没有属性'grid'
欢迎使用SO,快乐编码:D