如何为 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()
也和我一起工作
所以,我有这段代码,
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()
也和我一起工作