NameError:未定义名称“BOTTOM”

时间:2018-01-31 17:44:09

标签: python tkinter

我有:

from tkinter import Frame, Label, Button, Tk, Pack
gui = Tk()
bottomFrame = Frame(gui)
bottomFrame.pack(side=BOTTOM)

gui.mainloop()

当我尝试运行程序时,我收到一个未定义的名称'BOTTOM'错误。如果我使用:

from tkinter import *

它有效,但我已经读过,建议不要使用import *。事实上,如果我尝试的话,flake8会给我一些警告。

Pack类应该给我必要的方法和选项,但它没有。

1 个答案:

答案 0 :(得分:3)

BOTTOMtkinter模块的一个属性。 您需要明确导入它,或导入tkinter,然后参考tkinter.BOTTOM

首先解决方案,坚持你已经拥有的东西:

from tkinter import Frame, Tk, BOTTOM

gui = Tk()
bottomFrame = Frame(gui)
bottomFrame.pack(BOTTOM)

gui.mainloop()

第二个解决方案,我个人更喜欢:只导入tkinter模块,并在任何地方指定模块名称:

import tkinter as tk

gui = tk.Tk()
bottomFrame = tk.Frame(gui)
bottomFrame.pack(side=tk.BOTTOM)

gui.mainloop()

第三个解决方案,我不推荐但确实存在:因为tkinter.BOTTOM实际上等于"bottom",所以你可以这样做:

bottomFrame.pack(side="bottom")

此外,导入Pack类完全没用,因为您应该只通过Widget.pack方法访问它。 此外,你是正确的,以避免from tkinter import *声明,所以继续不使用它。