在Tkinter GUI中创建框架类

1 投票
2 回答
7070 浏览
提问于 2025-04-16 03:04

我正在做一个图形用户界面(Gui),我想知道如何创建一个类来实现一个框架(frame)。

比如:

class WindowContent(Tkinter.?)
    """ This class would create a frame for my program window """


class App(Tkinter.Tk):
    """ main window constructor """
    def __init__(self):
        Tkinter.Tk.__init__(self)
        program_window = WindowContent ?
        self.config(window = window_content) ?

祝好,

2 个回答

0

你为什么想要一个可以创建多个窗口的类呢?用一个类来创建多个窗口其实不是个好主意。你不需要一个单独的类来做到这一点。

要么为每个窗口创建不同的类,要么在你的应用里写方法来创建每个窗口。我个人更喜欢后者,但如果你想要一个可以在多个地方使用的窗口,有时候创建一个类也是有道理的。

当我做图形用户界面(GUI)的时候,我会这样组织我的代码:

class App(Tkinter.Tk):
    def __init__(self):
        Tkinter.Tk__init__(self)
        self.menubar = self.makeMenubar(...)
        self.frame1 = self.makeFrame1(...)
        self.frame2 = self.makeFrame2(...)

        self.configure(menu=self.menubar)
        self.frame1.grid(...)
        self.frame2.grid(...)

这样,每个主要部分都有自己的方法,可以隐藏创建界面元素的细节。当然,你可以让每个窗口成为一个自定义对象,但通常这样做并不是必要的。

2

我找到了答案:

class WindowProgram(Tkinter.Frame)
    """ This class creates a frame for my program window """
    def __init__(self, parent):
        Tkinter.Frame.__init__(self, parent)

class App(Tkinter.Tk):
    """ application constructor """
    def __init__(self):
        Tkinter.Tk.__init__(self)
        self.window_program = Window_Program(self)

撰写回答