yasar
yasar

Reputation: 13738

Can't put canvas side by side with other elements using grid manager

This is my code:

class Main(tk.Frame):

    w = 300
    h = 300

    def __init__(self,parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)

        self.parent = parent

        self.l1 = tk.Label(self, text="Iterations").grid(column=0,row=0)
        self.l2 = tk.Label(self, text="angle").grid(column=0,row=1)
        self.l3 = tk.Label(self, text="axiom").grid(column=0,row=2)
        self.l4 = tk.Label(self, text="rule1").grid(column=0,row=3)
        self.l5 = tk.Label(self, text="rule2").grid(column=0, row=4)
        self.l6 = tk.Label(self, text="constants").grid(column=0, row=5)

        self.e1 = tk.Entry(self, text="Iterations").grid(column=1,row=0)
        self.e2 = tk.Entry(self, text="angle").grid(column=1,row=1)
        self.e3 = tk.Entry(self, text="axiom").grid(column=1,row=2)
        self.e4 = tk.Entry(self, text="rule1").grid(column=1,row=3)
        self.e5 = tk.Entry(self, text="rule2").grid(column=1, row=4)
        self.e6 = tk.Entry(self, text="constants").grid(column=1, row=5)

        self.cv = tk.Canvas(width=self.w, height=self.h, bg='white')
        self.cv.grid(column=2, rowspan=5)

        # self.render_image()
        self.grid()

I want my entry boxes and canvas stay side by side, but labels and entry boxes are drawn below the canvas for some reason. I get this;

Imgur

How can I show them side by side instead?

Upvotes: 0

Views: 227

Answers (1)

ebarr
ebarr

Reputation: 7842

You haven't specified a row for your Canvas:

self.cv.grid(column=2, rowspan=5)

Just update this to include the top row:

self.cv.grid(column=2, rowspan=5, row=0)

Also rowspan should likely be 6 not 5.

Upvotes: 2

Related Questions