如何为 tkinter 框架分离 .py 文件?

How to separate a .py file for a tkinter frame?

所以,我有这段代码,

main.py:

from tkinter import Tk
from tkinter import Frame

class MainWindow():
    def __init__(self, master):
        self.master = master

        sw = self.master.winfo_screenwidth()
        sh = self.master.winfo_screenheight()

        w = 900
        h = 600

        x = (sw/2) - (w/2)
        y = (sh/2) - (h/2)
        
        self.master.geometry('%dx%d+%d+%d' % (w, h, x, y))
        self.master.resizable(False, False)

        #this part
        self.titleFrame = Frame(root, width=w, height=h-(h*0.92), bg="#1F2123")
        self.titleFrame.pack()
        #this part

if __name__ == "__main__":
    root = Tk()
    MainWindow(root)
    root.mainloop()

我想把这部分(下图)分离到另一个.py文件中,然后导入到我原来的main.py文件中

这个名字类似于 title_frame.py:

self.titleFrame = Frame(root, width=w, height=h-(h*0.92), bg="#1F2123")
self.titleFrame.pack()

(我在原代码中加了注释,想看的在哪)

关于为什么我需要一个单独的 .py 文件的原因,好吧 (1) 我需要它来提高代码的可读性,因为我会有多个框架,并且 (2) 这是我个人的喜好。

我就是想不通。任何帮助将不胜感激!

question_import_001.py 为:

from tkinter import Tk
from tkinter import Frame



def config(self, root,w,h):
    self.titleFrame = Frame(root, width=w, height=h-(h*0.92), bg="#1F2123")
    self.titleFrame.pack()

main.py为:

from tkinter import Tk
from tkinter import Frame

from question_import_001 import config

class MainWindow():
    def __init__(self, master):
        self.master = master

        sw = self.master.winfo_screenwidth()
        sh = self.master.winfo_screenheight()

        w = 900
        h = 600

        x = (sw/2) - (w/2)
        y = (sh/2) - (h/2)
        
        self.master.geometry('%dx%d+%d+%d' % (w, h, x, y))
        self.master.resizable(False, False)

        # config(self, root,w,h)              # ->works !!!!!!!!!!!
        # pippo = config(self, root,w,h)      # ->works !!!!!!!!!!!
        self.pippo = config(self, root,w,h)   # ->works !!!!!!!!!!!

        # #this part
        # self.titleFrame = Frame(root, width=w, height=h-(h*0.92), bg="#1F2123")
        # self.titleFrame.pack()
        # #this part

if __name__ == "__main__":
    root = Tk()
    MainWindow(root)
    root.mainloop()

对我来说是你的初始 main.py 但我不确定它是否有意义或是否有用

main.py 中使用:

 `config(self.master, w, h)` or `pippo = config(self.master, w, h)    ` or `self.pippo = config(self.master, w, h)    `

question_import_001.py为:

from tkinter import Tk
from tkinter import Frame

class config(Frame):

    def __init__(self, parent, w,h):
        Frame.__init__(self, parent)
        
        self.titleFrame = Frame(parent, width=w, height=h-(h*0.92), bg="#1F2123")
        self.titleFrame.pack()

或:

from tkinter import Tk
from tkinter import Frame

class config(Frame):

    def __init__(self, parent, w,h):
        super(config,self).__init__(parent)
        
        self.titleFrame = Frame(parent, width=w, height=h-(h*0.92), bg="#1F2123")
        self.titleFrame.pack()

也和我一起工作