为什么我不能使用网格功能?

时间:2015-10-12 16:23:20

标签: python macos python-3.x tkinter

我不能在Mac上使用Tkinter中的grid函数来支持Python 3。每当我尝试运行它时,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()

1 个答案:

答案 0 :(得分:0)

这是因为您尝试在共享同一父级的小部件上使用gridpack。具体来说,您使用的pack用于self.intro,网格用于self.name,但它们都共享frame的公共父级。

使用其中一个,而不是两个。您可以同时使用两者,但仅限于小部件不共享共同父级时。