在Tkinter应用Python 3.7中处理多个框架

时间:2018-08-31 05:11:00

标签: python tkinter object-oriented-database

我要制作的应用程序是使用类构造的。窗口大小为500x430,并且其中包含一个“容器”框架,该框架包含另外两个框架(左右)。右框架内有更多框架,每次调用时都会升高(可能不相关,但由左框架内的按钮调用)。

我无法使容器框架充满整个窗口。我意识到容器的大小取决于它需要适应的条件。相反,我需要它和正确的框架(以及正确框架内的每个框架)来填充窗口的大小。

class MainApp(Tk):
    def __init__(self, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)
        self.geometry('500x430')

        container = Frame(self, bg='orange')
        container.grid(columnspan=2, rowspan=1, sticky=N+E+S+W)


        container.grid_rowconfigure(0)
        container.grid_columnconfigure(0)



        left_frame = LeftFrame(container, self)
        left_frame.grid(row=0, column=0)

        right_frame = RightFrame(container, left_frame, bg='green')
        right_frame.grid(column=1, row=0, columnspan=2)

        rightcontainer = Frame(right_frame, bg='pink')
        rightcontainer.grid()


        self.frames = {}
        for F in (Welcome, AccOne, AccTwo, AccThree):
            frame = F(rightcontainer, self)
            self.frames[F] = frame


        self.show_frame(Welcome)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.grid(row=0, column=0, sticky=N+E+S+W)
        frame.tkraise()

我假设添加container.grid(sticky=N+E+S+W)会填满整个500x430窗口,但不会。

right_frame中的第一个可见帧是“欢迎”。框架“ Welcome”中的标签大小未填充窗口宽度,因此主框架“容器”未填充应用程序宽度。

如果我在“欢迎使用”中添加一个宽度较大的不可见按钮,则容器框架将填充窗口,但不会填充right_frame中的其他框架。

我是python的初学者。我希望我的问题和解释的方式清楚。任何帮助,将不胜感激。

0 个答案:

没有答案