如何从另一个模块中另一个类的内置函数接收数据



我正在编程一个案例管理器(管理系统(。为了建设性地构建它,我在单独的modules中编程以保持概述。有些模块包含class-object,我在其中构建了一个小型搜索引擎,包括它自己的functions。主要程序是案例形式本身。很明显,当搜索引擎找到一个条目时,它应该填写案例表单。我可以调用搜索引擎(搜索引擎也可以(,但我不知道如何将结果返回到主程序/案例表单/module

为了给你一张图片,我添加了GUI的图像,这样你就可以看到案例表单和搜索引擎(它是不同的moduleclass(继承tk.Toplevel(

相关代码(case_form/main程序(:

import ReferenceSearch as rs #Own module
def search_ref(self):
#Function to call search engine

search_engine = rs.ReferenceSearch(self, self.csv_file.get(), self.references_list)

#Reveive data from search_engine and show it in case_form
self.title_var.set(search_engine) #DOES NOT WORK BECAUSE search_engine IS THE ACTUAL ENGINE NOT THE 
DATA returned from its buildin function

ReferenceSearch模块中的相关代码:

class ReferenceSearch(tk.Toplevel):
def __init__(self, parent, csv_file,references_list=[]):
super().__init__()
self.parent = parent
self.csv_file = csv_file
self.references_list = references_list
self.ref_search_entry = ttk.Entry(self.search_frame)
self.search_but = tk.Button(self.search_frame,
text=" Search ",
command=lambda:self.search_for_ref(self.ref_search_entry.get())

def search_for_ref(self, reference, csv_file="Cases.csv"):
#Function to read specific entry by reference

if reference in self.references_list:
with open(csv_file, "r", newline="") as file:
reader = csv.DictReader(file, delimiter="|")

for entry in reader:
if reference == entry["Reference"]:

data = entry["Title"] #By example
return data 

如何从ReferenceSearchclass的内置function接收数据,并在主modulecase_form中使用它?

请记住,当按下搜索button(而不是case_formmodule(时,ReferenceSearchmodule正在调用此function。但是,数据需要在case_formmodule中。

ReferenceSearch模块内容更改为:

class ReferenceSearch(tk.Toplevel):
def __init__(self, parent, csv_file,references_list=[]):
super().__init__()
self.data = ""
self.parent = parent
self.csv_file = csv_file
self.references_list = references_list
self.ref_search_entry = ttk.Entry(self.search_frame)
self.search_but = tk.Button(self.search_frame,
text=" Search ",
command=lambda:self.search_for_ref(self.ref_search_entry.get())

def search_for_ref(self, reference, csv_file="Cases.csv"):
#Function to read specific entry by reference

if reference in self.references_list:
with open(csv_file, "r", newline="") as file:
reader = csv.DictReader(file, delimiter="|")

for entry in reader:
if reference == entry["Reference"]:

data = entry["Title"] #By example
self.parent.title_var.set(data)

和case_form内容到:

import ReferenceSearch as rs
def search_ref(self):
#Function to call search engine

search_engine = rs.ReferenceSearch(self, self.csv_file.get(), self.references_list)

最新更新