【发布时间】:2018-12-20 17:42:30
【问题描述】:
我有一个主页,其中有 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 区。但是转换器框架中的后退按钮返回主页,而不是 A 部分。如代码所示,在转换器类中有一个“返回”按钮将框架引导到主页,我应该如何更改代码的“controller.show_frame(StartPage)”部分,所以在括号中应该有我想要返回的部分名称,而不是“StartPage”。
【问题讨论】:
-
将你的帧存储在一个列表中,然后你可以根据索引加载它们。或者您可以使用 show_frame 方法通过按钮抬起您需要的框架。
标签: python-3.x oop tkinter