gpt4 book ai didi

python - 从另一个文件执行按钮命令?

转载 作者:行者123 更新时间:2023-12-04 07:56:00 26 4
gpt4 key购买 nike

我已经开始在一个 GUI 系统上工作,我需要从一个文件中导入一个函数,以便在按下按钮时在主文件中执行,但每次运行它时,我都会得到:

AttributeError: partially initialized module 'Two' has no attribute 'sum'
(most likely due to a circular import)
该程序应该输入两个值, Value_aValue_b ,以及被调用的函数 sum()应该将两者相加并在新窗口中输出结果。这是我要导入的文件及其功能的示例 sum() :
Two.py :
from tkinter import *  #Import the tkinter module    
import One #This is the main file, One.py

def sum():
newWindow = Toplevel(One.Window)
newWindow.title("Sum")
a = int(One.Value_a.get())
b = int(One.Value_b.get())
c = a+b
Label(newWindow, text= str(c)).grid(row=1, column=0)
这是主文件的样子:
One.py :
from tkinter import *
import Two

Window = Tk()
Window.title("Main Window")

Value_a = Entry(Window, width=15).grid(row=1, column=0)
Value_b = Entry(Window, width=15).grid(row=2, column=0)
my_button = Button(Window, text="Test", command=lambda: Two.sum).grid(row=3, column=0)

Window.mainloop()
当它运行时,我最终得到上述错误。

最佳答案

问题是因为你确实有一个通知 import .模块 One导入模块 Two导入模块One ...等等。但是,@acw1668 建议的简单修复方法不足以解决问题,因为 Two模块引用的不仅仅是 Window One 的属性模块。我的解决方案通过模块 One 中的东西模块Two中的功能需要作为参数(因此 Two 模块不需要 import 它来访问它们)。
问题 Tkinter: AttributeError: NoneType object has no attribute 中讨论了您的 tkinter 代码的另一个问题。 ,我建议你阅读。
以下是解决所有这些问题的两个模块的更改。
One.py :

from tkinter import *
import Two


Window = Tk()
Window.title("Main Window")

Value_a = Entry(Window, width=15)
Value_a.grid(row=1, column=0)
Value_b = Entry(Window, width=15)
Value_b.grid(row=2, column=0)

my_button = Button(Window, text="Test",
command=lambda: Two.sum(Window, Value_a, Value_b))
my_button.grid(row=3, column=0)

Window.mainloop()
Two.py :
from tkinter import *


def sum(Window, Value_a, Value_b):
newWindow = Toplevel(Window)
newWindow.title("Sum")
a = int(Value_a.get())
b = int(Value_b.get())
c = a+b
Label(newWindow, text= str(c)).grid(row=1, column=0)

关于python - 从另一个文件执行按钮命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66703267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com