一帧上显示的不同帧

时间:2017-05-09 14:58:16

标签: python python-3.x tkinter

我想创建一个多页面应用程序,但在另一个上面提升不同的框架时会遇到麻烦。我已经遵循了senddex的教程并尝试了很多不同的方法,但是在同一帧上显示所有帧小部件的问题,而不是我想要的不同帧。

按钮和"开始页面文字"应该在第一帧上,一旦我按下按钮,我应该调用另一帧在这一帧之上。第二帧的文字("问题页面文字")可以让你知道你在另一帧。

这不会发生。两个文本以及按钮都显示在同一帧上。

你可以运行下面的代码来看看我的意思。

from tkinter import *
from tkinter import ttk

LARGE_FONT = ("Verdana", 12)


class Quiz(Tk):
    frames = []

    def __init__(self, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)

        container = Frame(self, height=50, width=90)
        self.frames.append(container)
        container.pack()

        self.show_frame(StartPage(container, self))

    def show_subject(self):
        container = self.frames[0]
        self.show_frame(self, Question(container, self))

    def show_frame(self, frame):
        frame.tkraise()


class StartPage(Frame):
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)

        text = Text(width=40, height=2, spacing1=15)
        text.insert(INSERT, "Start page text")
        text.pack()

        button = ttk.Button(text="Geo", command=Quiz.show_subject(Quiz)).pack(fill=X)


class Question(Frame):
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)
        text = Text(width=40, height=2, spacing1=15)
        text.insert(INSERT, "Question page text")
        text.pack()


app = Quiz()
app.mainloop()

任何建议都会非常感激,因为我一直试图解决这个问题很长一段时间。

1 个答案:

答案 0 :(得分:2)

您要复制的设计的一个基石是页面中的所有内容都应该是该页面的子项。这就是重点 - 每个“页面”都被视为一个独立的小部件。你不这样做。

如果您想在特定页面上显示某些内容,请将其作为页面的一部分。如果它应该全局可见,请不要将其放在其中一个页面上。相反,请将其粘贴在根窗口中。