我正在编程一个案例管理器(管理系统(。为了建设性地构建它,我在单独的modules
中编程以保持概述。有些模块包含class-object
,我在其中构建了一个小型搜索引擎,包括它自己的functions
。主要程序是案例形式本身。很明显,当搜索引擎找到一个条目时,它应该填写案例表单。我可以调用搜索引擎(搜索引擎也可以(,但我不知道如何将结果返回到主程序/案例表单/module
。
为了给你一张图片,我添加了GUI的图像,这样你就可以看到案例表单和搜索引擎(它是不同的module
和class
(继承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
接收数据,并在主module
和case_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)