Перемещение между кадрами tkinter - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть главная страница с 8 различными фреймами.В каждом фрейме есть кнопка «Назад», которая ведет фрейм на главную страницу.Также у меня есть конвертер кадров, который выполняет некоторые математические операции, необходимые во всех кадрах.В рамке конвертера также есть кнопка «Назад», но кнопка «Назад» снова ведет рамку на главную страницуЯ хочу вернуться от кадра конвертера к предыдущему кадру, а не к главной странице.

import tkinter as tk
from tkinter import ttk  

class Application(tk.Tk):

def __init__(self):
    tk.Tk.__init__(self)
    tk.Tk.wm_title(self, "Geodesic Calculations")  

    container = tk.Frame(self)
    container.pack(side="top", fill="both", expand=True)
    container.grid_rowconfigure(0, weight=1)
    container.grid_columnconfigure(0, weight=1)

    self.frames = {}

    for F in (StartPage, A_section, B_section, C_section, D_section,
              E_section, F_section, G_section, H_section, Converter):
        frame = F(container, self)
        self.frames[F] = frame
        frame.grid(row=0, column=0, sticky="nsew")

    self.show_frame(StartPage)

def show_frame(self, cont):
    frame = self.frames[cont]
    frame.tkraise()
    return frame 

Раздел A: (один из 8 кадров)

class A_section(tk.Frame):

def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)

    btton = ttk.Button(self, text="Converter",
                       command=lambda: controller.show_frame(Converter))
    btton.grid(row=0, column=5)

    button1 = ttk.Button(self, text="Back",
                        command=lambda: controller.show_frame(StartPage))
    button1.grid(row=0, column=0)

Кадр конвертера:

class Converter(tk.Frame):

def __init__(self, parent, controller):                                     
    tk.Frame.__init__(self, parent)                      


    button1 = ttk.Button(self, text="Back",
                     command=lambda: controller.show_frame(StartPage))
    button1.grid(row=0, column=0) 

Например, когда я нахожусь в секции A, я хочу использовать конвертер, делать вычисления и затем возвращаться в секцию A с кнопкой «Назад» в кадре конвертера.Но кнопка «Назад» во фрейме конвертера возвращается на домашнюю страницу, а не в раздел А. Как показано в коде, в классе конвертера есть кнопка «Назад», которая ведет фрейм на главную страницу, как мне изменитьчасть кода «controller.show_frame (StartPage)», поэтому в параграфах должно быть имя раздела, к которому я хочу вернуться, а не «StartPage».

1 Ответ

0 голосов
/ 21 декабря 2018

Вы можете сохранить текущий отображаемый кадр в show_frame() и показать сохраненный кадр при вызове show_frame() с cont как None.Ниже приведено изменение show_frame():

def show_frame(self, cont=None):
  if cont is None:
    # show last frame
    cont = self.lastcont
  frame = self.frames[cont]
  frame.tkraise()
  if cont != Converter:
    self.lastcont = cont

Затем измените параметр command кнопки Back на странице Converter:

button1 = ttk.Button(self, text="Back", command=lambda: controller.show_frame())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...