我无法理解为什么我的以下tkinter脚本无法正常工作。当我运行它时,我看到它编译没有错误,但我实际上看不到任何窗口打开。当我尝试打包文本输入字段时发生错误。任何帮助将不胜感激。
from Tkinter import *
import ttk
main = Tk()
main.title('Testing')
topframe = Frame(main)
topframe.pack( side = TOP)
bottomframe = Frame(main)
bottomframe.pack( side = BOTTOM )
frame = Frame(main)
frame.pack()
Label(topframe, text="Date").grid(row=0)
e1 = Entry(topframe)
e1.insert(1, "May 24, 2017")
e1.pack()
main.mainloop()
答案 0 :(得分:1)
任何一个小部件的所有子节点都必须使用相同的几何管理器。具体来说,您的topframe
标签使用.grid()
,条目使用.pack()
;两个几何管理器永远无法就小部件的定位达成一致。更改其中一个以匹配另一个,您可以选择要更改哪一个(topframe
打包到其父级中的事实不会影响您的选择。)
答案 1 :(得分:1)
实际上尝试运行这样的东西时会出错。
_tkinter.TclError: cannot use geometry manager pack inside .!frame which already has slaves managed by grid
您需要注意如何使用.pack, .grid, .place
等布局管理器。查看此link有关几何管理器的信息。
变化:
Label(topframe, text="Date").grid(row=0)
要:
Label(topframe, text="Date").pack()
你的程序运行良好。
这对我来说很好。请注意,此时您无需导入ttk
from Tkinter import *
main = Tk()
main.title('Testing')
topframe = Frame(main)
topframe.pack( side = TOP)
bottomframe = Frame(main)
bottomframe.pack( side = BOTTOM )
frame = Frame(main)
frame.pack()
Label(topframe, text="Date").pack()
e1 = Entry(topframe)
e1.insert(1, "May 24, 2017")
e1.pack()
main.mainloop()
结果: