我有:
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类应该给我必要的方法和选项,但它没有。
答案 0 :(得分:3)
BOTTOM
是tkinter
模块的一个属性。
您需要明确导入它,或导入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 *
声明,所以继续不使用它。