python:全局重新加载模块
我正在制作一个pygame对话框,我有如下文件: window.py:python:全局重新加载模块,python,python-import,Python,Python Import,我正在制作一个pygame对话框,我有如下文件: window.py: class Window(): def set_size(self, size): self.size = size main_window = Window() dialogs.py: from window import main_window class Question(): def __init__(self): # lots of initializing
class Window():
def set_size(self, size):
self.size = size
main_window = Window()
dialogs.py:
from window import main_window
class Question():
def __init__(self):
# lots of initializing
self.position = (main_window.size[0] / 2, main_window.size[1] / 2) # centering dialog
question = Question()
其他文件:
from window import main_window
from dialogs import question
# do something
问题是,如果我在其他文件中更改主窗口的大小,那么问题对话框将不再居中,因为问题已经用不同的屏幕大小初始化。因此,我想让set_size方法为所有其他文件重新加载问题模块。我该怎么做
谢谢为什么不将
位置
作为一个属性,根据当前主窗口的大小重新计算?重新加载窗口
不会有任何帮助,因为该属性已被永久设置。它可能是一个属性,实际上是我的原始代码中的一个属性,但没有任何区别。我想重新加载question
对话框来修复self.position
而不是窗口
您的模型似乎有点坏了。为什么直接在它们的模块中创建实例?为什么不创建一个明确引用窗口的问题
实例
<代码>问题=问题(主窗口)
?我只需要一个所有模块都可以轻松访问的窗口。我使用一个对话框使初始化代码只执行一次。这可能是一个错误的选择,但我宁愿现在避免更改所有内容。为什么不将位置
作为一个属性,根据当前的主窗口重新计算。大小
?重新加载窗口
不会有任何帮助,因为该属性已被永久设置。它可能是一个属性,实际上是我的原始代码中的一个属性,但没有任何区别。我想重新加载question
对话框来修复self.position
而不是窗口
您的模型似乎有点坏了。为什么直接在它们的模块中创建实例?为什么不创建一个明确引用窗口的问题
实例
<代码>问题=问题(主窗口)?我只需要一个所有模块都可以轻松访问的窗口。我使用一个对话框使初始化代码只执行一次。这可能是一个错误的选择,但我宁愿现在避免改变一切。