Python Forum

Full Version: How to add multiple frames to main window
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Ok. I'm using Python 3.6 with PyCharm IDE on a MacBook.

I tried using the terminal to run the code & it still does nothing....
Sorry, I am at a loss. Maybe someone else can help.

Personally, when things like this happen, I try to find out where the issue is by adding little things to the code here and there. For example, it the WinchApp class, try adding this line and see if it shows anything:

Label(self, text="Hello").grid(row=10, column=20)
Nope. Nothing.

I can run other tkinter python code that works, but this GUI does not show up.... even after adding your label code to the WinchApp class.
Ok. I got it working.... I used notebook & added the frames to a tab of the notebook:

class MainWindow(tk.Frame):
  
    def __init__(self, parent, *args, **kwargs):
        # create different tabs within the main window:
        nb = ttk.Notebook(root)
        
        tab1 = ttk.Frame(nb)

        TopLeft = WinchFrame(tab1, padx=10, pady=20, relief='ridge')
        TopLeft.pack()
        TopRight = WinchFrame(tab1, padx=10, pady=20)
        TopRight.pack()
        BotLeft = WinchFrame(tab1, padx=10, pady=20, relief='ridge')
        BotLeft.pack()
        BotRight = WinchFrame(tab1, padx=10, pady=20)
        BotRight.pack()



class WinchFrame(tk.Frame):

    def __init__(self, parent=None, **kw):
        Frame.__init__(self, parent, kw)

        #  CREATE WIDGETS:
        self.winch_lbl = Label(self, width=15)
        self.lbl_btn_up = Label(self, text="UP")
        self.btn_up = Button(self, text="OFF", width=12, fg='green', command=self.toggle_up)
        self.txt = Text(self, height=1, width=50, bg="light blue")
        self.lbl_btn_down = Label(self, text="DOWN")
        self.btn_down = Button(self, text="OFF", width=12, fg='green', command=self.toggle_down)

        #  LAYOUT:
        self.winch_lbl.grid(row=1, column=0, padx=5, pady=5)
        self.lbl_btn_up.grid(row=1, column=1, padx=5, pady=5)
        self.btn_up.grid(row=1, column=2, padx=5, pady=5)
        self.lbl_btn_down.grid(row=3, column=1, padx=5, pady=5)
        self.btn_down.grid(row=3, column=2, padx=5, pady=5)
        self.txt.grid(row=5, column=1, columnspan=2, padx=5, pady=5)

    def toggle_up(self):
        '''
        use
        t_btn.config('text')[-1]
        to get the present state of the toggle button
        '''
        if self.btn_up.config('text')[-1] == 'ON':
            self.btn_up.config(text='OFF', highlightbackground='gray')
            print('button turned off')
            self.btn_down['state'] = tk.NORMAL
        else:
            self.btn_up.config(text='ON', highlightbackground='red')
            print('button turned on')
            self.btn_down['state'] = tk.DISABLED


    def toggle_down(self):
        '''
        use
        t_btn.config('text')[-1]
        to get the present state of the toggle button
        '''
        if self.btn_down.config('text')[-1] == 'ON':
            self.btn_down.config(text='OFF', highlightbackground='gray')
            print('button turned off')
            self.btn_up['state'] = tk.NORMAL
        else:
            self.btn_down.config(text='ON', highlightbackground='red')
            print('button turned on')
            self.btn_up['state'] = tk.DISABLED
Pages: 1 2