背景:
我当前的程序基于一个 UI 模块,该模块连接到各种数据分析和生成模块。生成、分析数据并发送到 UI,然后可以在其中操作数据并通过分析模块放回数据,然后再刷新 UI。但是,这需要将数据从 UI 模块导入分析模块,然后将分析后的数据拉回界面,这似乎是在每次更改时创建程序的新实例——这当然不是我的意图。这是我编写的第一个依赖于我自己的几个模块同时导入的接口,早期的接口要么是自包含的,要么在模块之间共享有限的数据。
问题:
在模块之间传递信息的最有效方式是什么?避免创建“反馈”循环的最佳方法是什么(如下面的简化示例所示)?
例子:
from Tkinter import *
#Example Data_UI module
class Interface_On:
def Interface_Elements(self, master):
self.master=master
self.master.title("'Feedback' Loop")
self.c=Canvas(self.master, width=1000, height=1000, bg='black')
self.c.grid(row=0, rowspan=25, column=0)
drawing_utility_run=Canvas_Draw()
drawing_utility_run.canvas_objects(self.c)
class Canvas_Draw:
def canvas_objects(self, canvas):
global new_x, new_y
self.canvas=canvas
new_x=[]
new_y=[]
from Data_Presets import a
import Data_Generator
Generator_run=Data_Generator.Generator()
Generator_run.generator()
from Data_Generator import coordinates_x, coordinates_y
import Data_Processor
Process_Data=Data_Processor.Data_Processor()
Process_Data.Process_Data()
from Data_Processor import data_set, analysed_set, filtered_set
for i in range(len(data_set)):
self.canvas.create_oval(coordinates_x, coordinates_y, coordinates_x+a, coordinates_y+a, ...)
def move_point:
#interactive objects etc etc
new_x.append(event.x) #etc
root=Tk()
run_it=Interface_On()
run_it.Interface_Elements(root)
root.mainloop()
#Seperate Data Analysis module
class Data_Processor:
def Process_Data(self):
from Data_UI import new_x, new_y #This appears to create the unwanted loop
#Data Analysis etc
#What is the most efficient way to get data from the UI into this module and avoid creating a new instance of the UI?