0

I am trying to run the following code:

from tkinter import *

root = Tk()

topFrame = Frame(root)
topFrame.pack(side=TOP)
leftFrame = Frame(root)
leftFrame.pack(side=LEFT)
botFrame = Frame(root)
botFrame.pack(side=BOTTOM)

button1 = Button(leftFrame, text="Button 1", fg="Black")
button2 = Button(leftFrame, text="Button 2", fg="Black")
button3 = Button(leftFrame, text="Button 3", fg="Black")

button1.grid(row=0, column=0)
button2.grid(row=1, column=0)
button3.grid(row=2, column=0)

ScaleWidget = Scale(root, from_=0, to=100)
ScaleWidget.grid(row=0, column=1)

ScaleWidget = Scale(root, from_=0, to=100, orient=HORIZONTAL)
ScaleWidget.grid(row=0, column=1)

root.mainloop()

However I am getting to following error message:

D:\Python\python.exe D:/untitled/TkInter_Frame_Full_GUI.py
Traceback (most recent call last):
  File "D:/untitled/TkInter_Frame_Full_GUI.py", line 21, in <module>
    ScaleWidget.grid(row=0, column=1)
  File "D:\Python\lib\tkinter\__init__.py", line 2057, in grid_configure
    + self._options(cnf, kw))
_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack

and am unsure of what to do, help is much appreciated, thanks!

TheHarpoon
  • 401
  • 2
  • 4
  • 14
  • It is *advised* not to mix `pack` and `grid` – Bhargav Rao Jan 29 '15 at 14:20
  • Try putting your Scale widgets inside one of your frames instead of putting them directly in the root. – Kevin Jan 29 '15 at 14:27
  • 1
    @BhargavRao: be careful with that advice. A better way to say it is you absolutely cannot mix grid and pack in the same container, but you _can_ (and it's encouraged) to use both grid and pack within an application as a whole. – Bryan Oakley Jan 29 '15 at 15:07
  • @BryanOakley I'm sorry, I actually meant to say that... :( – Bhargav Rao Jan 29 '15 at 15:08
  • Possible duplicate of [Cannot use geometry manager pack inside](https://stackoverflow.com/questions/23584325/cannot-use-geometry-manager-pack-inside) – Stevoisiak Feb 14 '18 at 21:13

1 Answers1

1

You shouldn't mix grid and pack managers for windows that share a common parent:

Warning: Never mix grid and pack in the same master window. Tkinter will happily spend the rest of your lifetime trying to negotiate a solution that both managers are happy with. Instead of waiting, kill the application, and take another look at your code. A common mistake is to use the wrong parent for some of the widgets.

Source : http://effbot.org/tkinterbook/grid.htm

Bryan Oakley
  • 370,779
  • 53
  • 539
  • 685
lucasg
  • 10,734
  • 4
  • 35
  • 57