经过几个小时的尝试调试循环导入问题,我想在这里寻求一些帮助。
请注意,经过研究,我无法找到我的具体问题,这将是有帮助的。我发现的一些问题是基于类内的Button()
。然而,这不是事实。我的目标是.get
从文本框输入,并将其转换为json格式又名美化。(类似于可以在API测试工具中完成)
我在pointer.py
中有一个函数可以完成这项工作,但是我想我应该在另一个文件中创建一个类来清理一下。
#--------------------------------------beautify_data.py--------------------------------------------#
import json
from pointer import text_box, payload_field
class Beautifier:
def __init__(self, beautiful_payload):
self.new = beautiful_payload
def beautifying(self):
json_object = json.loads(self.new)
new_json = json.dumps(json_object, indent=4)
text_box.delete('1.0', "end") # Deleting content in text box
text_box.insert('1.0', new_json) # Inserting pretty printed data
payload_field.set(new_json) # Setting another field with pp data
return new_json
#--------------------------------------pointer.py--------------------------------------------#
from beautify_data import Beautifier
button_save_payload = ttk.Button(width=8, text="BEAUTIFY", command=lambda: [Beautifier(get_text_box)])
button_save_payload.place(x=1110, y=75)
text_box = Text(window, width=68, height=29, bg="black", font=("Helvetica", 17))
text_box.grid(row=0, column=0, sticky="nsew")
text_box.place(x=420, y=70)
get_text_box = text_box.get("1.0", END)
mytest = Beautifier(get_text_box)
new = mytest.beautifying()
print(new)
我收到的错误是:
ImportError: cannot import name 'Beautifier' from partially initialized module 'beautify_data' (most likely due to a circular import)
2条答案
按热度按时间9jyewag01#
pointer
中的代码不需要从pointer
导入数据,而是需要给予对小部件的访问权限授予Beautifier
类。您可以通过多种方式来实现这一点-您可以将数据传递给Beautifier.__init__
,或者传递给beautifying
。或者,您可以在pointer.py
中创建一个更新其自己的小部件的函数,并将其作为回调传递。下面是后者的一个示例,将回调传递给
Beautifier.__init__
:美化数据.py
pointer.py
我建议从
Beautifier.__init__
中删除beautiful_payload
,并将其传递给beautifying
,这样您就可以创建一个示例,然后多次使用它,而不必每次都创建一个新示例。美化数据.py:
pointer.py
envsm3lx2#
最好更新
pointer.py
中的小部件,这样就不需要在beautify_data.py
中导入pointer.py
:美化数据.py
pointer.py