Как классы могут наследовать tk.frames при вызове в качестве модуля в Python
Я tk
новичок и у меня проблемы с импортом классов и их наследование кадров. Если я сложу весь код в одном файле, он будет работать. Что-то вроде (я нашел это на Github извините за отсутствие авторства),
imports...
class Clock(Frame):
def __init__(self, parent, *args, **kwargs):
Frame.__init__(self, parent, bg='black')
code....
class FullscreenWindow:
def __init__(self):
self.tk = Tk()
self.tk.configure(background='black')
self.topFrame = Frame(self.tk, background = 'black')
self.bottomFrame = Frame(self.tk, background = 'black')
self.topFrame.pack(side = TOP, fill=BOTH, expand = YES)
self.bottomFrame.pack(side = BOTTOM, fill=BOTH, expand = YES)
self.state = False
self.tk.bind("<Return>", self.toggle_fullscreen)
self.tk.bind("<Escape>", self.end_fullscreen)
# clock
self.clock = Clock(self.topFrame)
w = FullscreenWindow()
w.tk.mainloop()
Тем не менее, если я пытаюсь разбить код, чтобы я мог импортировать модули в каталогах и подкаталогах, я получаю ошибки, потому что я не понимаю, как передать кадры. Например, если я помещу класс Clock в файл modules/clock/Clock.py
(да я в том числе __init__.py
во всех каталогах) и измените код на
from modules.clock import Clock
class FullscreenWindow:
def __init__(self):
self.tk = Tk()
self.tk.configure(background='black')
self.topFrame = Frame(self.tk, background = 'black')
self.bottomFrame = Frame(self.tk, background = 'black')
self.topFrame.pack(side = TOP, fill=BOTH, expand = YES)
self.bottomFrame.pack(side = BOTTOM, fill=BOTH, expand = YES)
self.state = False
self.tk.bind("<Return>", self.toggle_fullscreen)
self.tk.bind("<Escape>", self.end_fullscreen)
# clock
self.clock = Clock(self.topFrame)
w = FullscreenWindow()
w.tk.mainloop()
Я получаю ошибку
File "modules\clock\Clock.py", line 8, in <module>
class Clock(Frame):
NameError: name 'Frame' is not defined
Как я могу настроить код, чтобы разбить код на модули и передать tk. Frame?