Tkinter - как создать вкладку и перенести на нее контент? - PullRequest
0 голосов
/ 24 сентября 2019

Создано приложение.Я хотел бы расширить его, добавив несколько вкладок.

Дав им имена, такие как «Главный экран», «Вручную».Я мог бы переключаться между вкладками, но я не уверен, как использовать, применять и структурировать мой код, используя Notebook.

Вот код:

from tkinter import *

class App():
    def __init__(self,master):
        #Frames
        left_frame = Frame(master)
        right_frame = Frame(master)
        left_frame.pack(side="left", fill="both", expand=True)
        right_frame.pack(side="right", fill="both", expand=True)

        var1 = IntVar()
        var1a = IntVar()

        #Displaying checkboxes and assigning to variables
        self.Checkbox = Checkbutton(right_frame, text="Ingredients present in full (any allergens in bold with allergen warning if necessary)", variable=var1)
        self.Checkbox.grid(column = 1, row = 1, sticky = W)
        self.Checkbox2 = Checkbutton(right_frame, variable = var1a)
        self.Checkbox2.grid(column = 0, row = 1, sticky = W)

       ###FRAME 2###
        #widgets
        self.msg1 = Label(left_frame, text = "Choose here")
        self.msg1.grid(column = 0, row = 0)

root = Tk()
root.minsize(890, 400)
root.title("test only")
app = App(root)
root.mainloop()

Как я могу создать вкладку для вышеупомянутого и назвать ее Main-Screen, а также добавить следующий код в новую вкладку и назвать ее Manual:

    #widgets
    self.msg1 = Label(left_frame, text = "Click here!")
    self.msg1.grid(column = 0, row = 0)

Основной вопрос:

Как поместить первый фрагмент кода в одну вкладку, а другой код - в другую вкладку?И сможете переключаться между двумя?

Ответы [ 3 ]

0 голосов
/ 24 сентября 2019

Notebook предоставляет вам экран с вкладками.Общий пример выглядит следующим образом:

from tkinter import *
from tkinter import ttk

root = Tk()
note = ttk.Notebook(root)

ms = ttk.Frame(note)
note.add(ms, text = "Main-Screen")
mn = ttk.Frame(note)
note.add(mn, text = "Manual")
note.pack()

root.mainloop()

Добавьте ваши виджеты по мере необходимости в кадры ms и mn

0 голосов
/ 24 сентября 2019

Как добавить notebook в главное окно, вы можете узнать больше об этом по ссылке .Прокомментировали мой код, чтобы лучше его понять.

from tkinter import *
import tkinter.ttk as ttk

class App():
    def __init__(self,master):
        #Frames
        # Make the notebook
        nb = ttk.Notebook(root)
        nb.pack()

        # Make 1st tab
        right_frame = Frame(nb,)
        # Add the tab
        nb.add(right_frame, text="First tab")

        # Make 2nd tab
        left_frame = Frame(nb)
        # Add 2nd tab
        nb.add(left_frame, text="Second tab")

        nb.select(left_frame)

        nb.enable_traversal()

        var1 = IntVar()
        var1a = IntVar()

        #Displaying checkboxes and assigning to variables
        self.Checkbox = Checkbutton(right_frame, text="Ingredients present in full (any allergens in bold with allergen warning if necessary)", variable=var1)
        self.Checkbox.grid(column = 1, row = 1, sticky = W)
        self.Checkbox2 = Checkbutton(right_frame, variable = var1a)
        self.Checkbox2.grid(column = 0, row = 1, sticky = W)

       ###FRAME 2###
        #widgets
        self.msg1 = Label(left_frame, text = "Choose here")
        self.msg1.grid(column = 0, row = 0)


        # THIS IS THE THIRD FRAME
        self.bottomframe = Frame(master, bg="red", width=400, height=200)
        self.bottomframe.pack(side=BOTTOM, fill=BOTH)

        self.label3 = Label(self.bottomframe, text="THIS IS THE THIRD FRAME")
        # self.label3.grid(column=0, row=0)
        self.label3.pack()            


root = Tk()
root.minsize(890, 400)
root.title("test only")
app = App(root)
root.mainloop()
0 голосов
/ 24 сентября 2019

Вы можете использовать ttk.Frame:

from tkinter import *
from tkinter import ttk
import os
import glob
from PIL import Image, ImageTk, ImageGrab
from pathlib import Path

class App():
    def __init__(self,master):
        notebook = ttk.Notebook(master)
        notebook.pack()

        #Frames
        left_frame = ttk.Frame(notebook)
        right_frame = ttk.Frame(notebook)
        notebook.add(left_frame, text='Main-Screen')
        notebook.add(right_frame, text='Manual')

        var1 = IntVar()
        var1a = IntVar()

        #Displaying checkboxes and assigning to variables
        self.Checkbox = Checkbutton(right_frame, text="Ingredients present in full (any allergens in bold with allergen warning if necessary)", variable=var1)
        self.Checkbox.grid(column = 1, row = 1, sticky = W)
        self.Checkbox2 = Checkbutton(right_frame, variable = var1a)
        self.Checkbox2.grid(column = 0, row = 1, sticky = W)

       ###FRAME 2###
        #widgets
        self.msg1 = Label(left_frame, text = "Choose here")
        self.msg1.grid(column = 0, row = 0)

root = Tk()
root.minsize(890, 400)
root.title("test only")
app = App(root)
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...