Python 将值传递给tkinter类

Python 将值传递给tkinter类,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,这是我实际计划的一部分。我试图写一个代码,将创建几个按钮的循环。 我的问题是我正在向tkinter类传递一个值,但它没有打印正确的值,而只是打印一个“.”。 我想在下面的代码中将“chap”从class PageOne传递到“class ChapterOne”,但它不起作用。我在课堂上没有多少经验。如果您能在这里帮忙,我们将不胜感激 import tkinter as tk from PIL import ImageTk, Image from os import listdir import

这是我实际计划的一部分。我试图写一个代码,将创建几个按钮的循环。 我的问题是我正在向tkinter类传递一个值,但它没有打印正确的值,而只是打印一个“.”。 我想在下面的代码中将“chap”从class PageOne传递到“class ChapterOne”,但它不起作用。我在课堂上没有多少经验。如果您能在这里帮忙,我们将不胜感激

import tkinter as tk
from PIL import ImageTk, Image
from os import listdir
import yaml

LARGE_FONT = ("Verdana", 12)
grey = "#808080"
offwhite = "#e3e3e3"
hintwa = False
x = ''

class MainBot(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        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 page in (StartPage, PageOne, ChapterOne):
            frame = page(container, self)
            print (container)
            self.frames[page] = frame
            frame.grid(row = 0, column = 0, sticky = 'nsew')

        self.show_frame(StartPage)

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

    def yaml_loader(self, filepath):
        with open (filepath, "r") as fileread:
            self.data = yaml.load(fileread)
            return self.data

class StartPage(tk.Frame):

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

        label = tk.Label(self, background = offwhite, text= "Start Page", font = LARGE_FONT)
        label.pack(pady=10, padx=10)

        button_start = tk.Button(self, text = 'NEXT', font = ("default", 15, "bold"), bg='orange', fg = 'white', border=2, height = 2, width = 8, command=lambda: controller.show_frame(PageOne))
        button_start.pack()
        button_start.place(x=650, y=500)

class PageOne(tk.Frame):

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

        index_label = tk.Label(self, text = "~~~~~INDEX~~~~~", font = ("Comicsans", 24, "bold"), background = offwhite)
        index_label.pack()
        index_label.place(x=200, y=50)

        onlyfiles = ['chapter-1.yaml']
        for yfiles in onlyfiles:
            chap = (yfiles.split("."))[0].split("-")[1]
            print (chap)
            button_index_one = tk.Button(self, text='Chapter ' + str(chap), font=("default", 14, "bold"), bg='white',
                                         fg='black', border=1, height=2, width=12,
                                         command=lambda: controller.show_frame(ChapterOne(self, chap)))
            button_index_one.pack(pady=30, padx=0)

class ChapterOne(tk.Frame):
    def __init__(self, parent, chap):
        tk.Frame.__init__(self, parent)
        print (chap)

app = MainBot()
app.geometry("800x600")
app.mainloop()

这回答了你的问题吗?谢谢@Atlas435的链接。我意识到我不应该使用“command=lambda:controller.show_frame”。这能回答你的问题吗?谢谢@Atlas435的链接。我意识到我不应该使用“command=lambda:controller.show\u frame”。