在同一个GUI

时间:2017-03-30 22:41:03

标签: python tkinter

我一直在四处寻找懈怠,很多人都说这是可能的,但没有例子说明如何去做。

我希望在同一个GUI中同时使用pack和grid。我已经使用打包另一个网格设置了2个不同的帧1但是在尝试运行GUI时仍然出现错误。

我认为只要有不同的框架就可以使用不同的命令吗?

这是我的代码

from tkinter import*

root = Tk()
root.title("UKIND Industry Tool")
root.geometry("600x600")
root.resizable(width=False, height=False)

# ----- Top Frame -----
topFrame = Frame(root, bg="grey", width=600, height=25, pady=1)
topFrame.pack(side=TOP, fill=X)

# ----- Top Frame Label -----

oreCalc = Button(topFrame, text= "Ore Calculator")
minCalc = Button(topFrame, text= "Mineral Calculator")
oreCalc.pack(side=LEFT)
#minCalc.pack(side=LEFT)

# ----- Bottom Frame -----

bottomFrame = Frame(root, bg="green", width=600, height=585, pady=1)
bottomFrame.grid()


root.mainloop()

以下是追溯错误:

  

追踪(最近一次通话):     File" C:/Users/Ganjena/Desktop/Course/Projects/helloworld/test.py" ;,第22行,in       bottomFrame.grid()     文件" C:\ Users \ Ganjena \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ tkinter__init __。py",第2220行,在grid_configure中       + self._options(cnf,kw))   _tkinter.TclError:无法使用几何管理器网格。已经有包管理的奴隶

     

使用退出代码1完成处理

1 个答案:

答案 0 :(得分:2)

topFramebottomFrame都是您的根窗口的子项,但您在一个上调用.pack(),在另一个上调用.grid()。换句话说,错误信息完全意味着它所说的!

您实际可以做的是对.grid()的孩子使用bottomFrame;这与使用.pack()topFrame的孩子或bottomFrame本身的孩子没有冲突。但是,共享父级的任何两个小部件都必须共享几何管理器。