2015-10-12 76 views
-1

我不能在Mac上使用Tkinter for Python 3中的grid函数。每当我尝试运行它,IDLE停止响应,我必须退出它,但是当我使用.pack()函数时,它运行良好。为什么我不能使用网格功能?

from tkinter import * 



class MainWindow: 
    def __init__(self): 
     window = Tk() 
     frame = Frame(window, width=600, height=800) 
     frame.pack(expand=True) 
     btframe = Frame(window) 
     btframe.pack(side=BOTTOM, expand=True) 

     self.intro = Label(frame, text="Welcome to your personal email client", font =("Courier", 20, "bold")) 
     self.name = Label(frame, text="\nName",foreground="red", font=("Helvetica",16,"bold")) 
     self.password = Label(frame, text="\nPassword", foreground="blue", font=("Helvetica",16,"bold")) 

     self.entry1 = Entry(frame) 
     self.entry2 = Entry(frame) 

     self.intro.pack() 
     self.name.grid(row=1, column=2) 
     self.entry1.grid(row=1, column=3) 
     self.password.grid(row=3, column=2) 
     self.entry2.grid(row=3, column=3) 


     self.submitB = Button(btframe, text="Submit", command= self.display) 
     self.quitB = Button(btframe, text="Quit", command=window.destroy) 
     self.submitB.pack() 
     self.quitB.pack() 
     window.mainloop() 

    def display(self): 
     print("Submitted Succesfully") 


MainWindow() 
+0

你是混合在同一容器中'grid'和'pack' - 这是一个非常糟糕的主意。 – jonrsharpe

回答

0

这是因为你正试图在共享相同的父控件使用gridpack。具体而言,您使用pack代替self.intro并使用self.name的网格,但它们共享一个共同的父亲frame

使用一个或另一个,而不是两个。您可以同时使用,但仅在小组件不共享公共父组件时使用。

+0

哦,非常感谢你......它帮了我很多 –

相关问题