首页 > 解决方案 > 如何让 Tkinter Frame 接受参数?

问题描述

我正在开发一个超过 20 帧的应用程序。

有一帧(帧 {A})打开另一帧(帧 {B}),并且我需要将一些数据从帧 A 传递到帧 B,我该怎么做?

这是我的 Main.py 用于打开所有框架

class Application(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.window = tk.Frame(self)
        self.window.pack()
        self.currentFrame = ""
        self.frames = {}
        for F in (
                FirstPage, SecondPage):
            frame = F(self.window, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame(FirstPage, first)

    def show_frame(self, page, framename):
        self.currentFrame = framename
        frame = self.frames[page]
        frame.tkraise()

    def addAndShowFrame(self, Page, frameName):
        try:
            self.show_frame(Page, frameName)
        except:
            frame = Page(self.window, self)
            self.frames[Page] = frame
            frame.grid(row=0, column=0, sticky="nsew")
            frame.tkraise()



app = Application()
app.attributes('-fullscreen', True)
app.mainloop()

然后我打开了这个框架

from tkinter import ttk

from Base import *
from Db import *
from NwabFrames.SohofPages.Mawdo import SohofNwMawdo


class FirstPage(tk.Frame):

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

        def open_new_frame():
            controller.addAndShowFrame(
                SohofNwMawdo, "test")
        # Create Canvas
        canvas = tk.Canvas(self, bg="black", width=1920, height=1080)
        canvas.grid(row=0, column=0)
        self.bg = open_image_resize(r"Images\3-NwabPages\SohofPage\Bg.png")
        canvas.create_image(0, 0, image=self.bg, anchor="nw")
        button = tk.Button(canvas, text='open', command=open_new_frame, bg='#2b2b2b', fg='#fdd8a4')
            canvas.create_window(cord(0.1, 0.1), window=button)

现在我需要从最后一帧打开另一个并用一些数据启动它

标签: pythontkinterframepython-3.9

解决方案


推荐阅读