Python 防止循环导入示例

Python 防止循环导入示例,python,python-3.x,import,Python,Python 3.x,Import,假设我有两个python文件。两者都使用GUI。第一个是“Main”,第二个是“Calculator”。我将从主计算机开始。所以我必须导入计算器。在计算器里我要做一个计算。让我保持轻松,比如说1+1=2。现在我想把这个结果“发送”到Main中的文本中 在没有循环导入的情况下,我如何做到这一点?我找不到一个好的教程/例子 到目前为止,我的代码是: 主要内容: 第二: from tkinter import * def start_second(): window2 = Tk()

假设我有两个python文件。两者都使用GUI。第一个是“Main”,第二个是“Calculator”。我将从主计算机开始。所以我必须导入计算器。在计算器里我要做一个计算。让我保持轻松,比如说1+1=2。现在我想把这个结果“发送”到Main中的文本中

在没有循环导入的情况下,我如何做到这一点?我找不到一个好的教程/例子

到目前为止,我的代码是:

主要内容:

第二:

from tkinter import *


def start_second():
    window2 = Tk() 
    window2.title("Second Window")

    def send():
        x = Input.get()


    Input2 = Entry(window2)
    Input2.grid(row=0,column=0, padx=10, pady=5)

    Send = Button(window2,text="Send", command=send)
    Send.grid(row=1,column=0, padx=10, pady=5)


    window2.mainloop()

这段代码完全符合您的要求(与我在注释中的建议相反;但无论如何,您要么从模块函数中获得一个值,要么发送一个引用以进行修改)

我试着跟随你的结构

基本上是将父窗口和第一个条目作为参数发送给第二个窗口创建函数。不要调用mainloop两次,最后只调用一次,对main
Tk
1之后的所有其他窗口使用
Toplevel
。这并不是说为了可读性,我喜欢使用内部函数和
lambda
,但在tkinter中,每当您想向命令回调发送参数时,lambda都是必需的,否则它将在命令定义中正确调用

tkinter_w1.py(您的main.py)

tkinter_w2.py(您的测试_2.py)


既然您是从“Main”调用函数,为什么不返回一个值,然后在“Main”中使用该值呢?同意@FlyingTeller。不要发邮件。从另一边取回它。看到我在这里对一个类似问题的回答了吗?我有一些问题需要将我的初学者知识转换成我的代码。我已将我的代码添加到queston中。你能帮我把钱还回去吗?非常感谢!也是为了帮助我改进我的代码。
from tkinter import *


def start_second():
    window2 = Tk() 
    window2.title("Second Window")

    def send():
        x = Input.get()


    Input2 = Entry(window2)
    Input2.grid(row=0,column=0, padx=10, pady=5)

    Send = Button(window2,text="Send", command=send)
    Send.grid(row=1,column=0, padx=10, pady=5)


    window2.mainloop()
from tkinter import Tk, ttk
import tkinter as tk

from tkinter_w2 import open_window_2

root = Tk()

entry1 = ttk.Entry(root)
button1 = ttk.Button(root, text='Open Window 2',
    command=lambda parent=root, entry=entry1:open_window_2(parent, entry))

entry1.pack()
button1.pack()
root.mainloop()
from tkinter import Tk, ttk, Toplevel
import tkinter as tk

def open_window_2(parent, entry):

    def send():
        entry.delete(0,tk.END)
        entry.insert(0,entry2.get())

    window2 = Toplevel(parent)
    entry2 = ttk.Entry(window2)
    button2 = ttk.Button(window2, text='Send', command=send)
    entry2.pack()
    button2.pack()