Python Tkinter:无法在框架中插入文本输入框

时间:2017-05-24 18:50:41

标签: python tkinter

我无法理解为什么我的以下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()

2 个答案:

答案 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()

结果:

enter image description here

相关问题