Python 如何将变量从另一个函数导入到另一个函数

Python 如何将变量从另一个函数导入到另一个函数,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我试着用Pycharm和tkinter制作一个简单的兴趣计算器 这是我的密码 这表明x没有定义 我已经尝试将变量设置为全局变量 我也不能在finalProgram函数中调用这个函数,因为它使它成为无止境的循环 from tkinter import * def mainWindow(): label = Label(frame, text = "What do you want to do") label.pack() but1 = Button(frame, te

我试着用Pycharm和tkinter制作一个简单的兴趣计算器

这是我的密码 这表明x没有定义

我已经尝试将变量设置为全局变量

我也不能在finalProgram函数中调用这个函数,因为它使它成为无止境的循环

from tkinter import *


def mainWindow():

    label = Label(frame, text = "What do you want to do")
    label.pack()
    but1 = Button(frame, text = "SI", command = SimpleInterest)
    but1.pack()

def SimpleInterest():
    global x
    frame.destroy()
    label5 = Label(frame2,text="Please enter principal amount" )
    label5.pack()
    p = Entry(frame2 )
    p.pack()
    label6 = Label(frame3,text="Please ROI")
    label6.pack()
    r = Entry(frame3, text="Please enter rate of interest")
    r.pack()
    label7 = Label(frame4, text="Please enter time")
    label7.pack()
    t = Entry(frame4, text="Please enter time")
    t.pack()
    buttonmain = Button(frame4, text = "Finlise", command = finalProgram)
    buttonmain.pack()
    global x
    x =(p*r*t)/100
def finalProgram():
    frame2.destroy()
    frame3.destroy()
    frame4.destroy()
    global x
    newlabel = Label(frame5, text = x)


root = Tk()
frame = Frame(root)
frame.grid(row=0,columnspan = 2)
mainWindow()
frame2 = Frame(root)
frame2.grid(row = 0, columnspan =2)
frame3 = Frame(root)
frame3.grid(row =1, columnspan =2)
frame4 = Frame(root)
frame4.grid(row=2, columnspan =2)
frame5 = Frame(root)
frame5.grid(row=0)

root.mainloop()

您的代码只有一个修改。在下一节中添加了一行:

x = 0.0
这是为了确保在全局范围内有一个变量
x
。在全局范围内使用该变量,您就可以在函数中使用(读写)它(在您使用
global x
将其声明为全局变量后)


请注意,这只是您所问问题的快速解决方法。UE代码的一般结构并不是很好,您应该考虑学习类和/或如何将参数传递给函数的概念。

参见全局变量的实现。在外面申报。我不太清楚。你能不能修改一下我的计划,告诉我最后的计划。谢谢是答案。为了你自己的利益,你自己试试吧。如果仍然不起作用,请用您所做的更改和面临的错误更新问题,我们将看看如何解决它!谢谢你,我一定会注意到这一点。
from tkinter import *


def mainWindow():

    label = Label(frame, text = "What do you want to do")
    label.pack()
    but1 = Button(frame, text = "SI", command = SimpleInterest)
    but1.pack()

def SimpleInterest():
    global x
    frame.destroy()
    label5 = Label(frame2,text="Please enter principal amount" )
    label5.pack()
    p = Entry(frame2 )
    p.pack()
    label6 = Label(frame3,text="Please ROI")
    label6.pack()
    r = Entry(frame3, text="Please enter rate of interest")
    r.pack()
    label7 = Label(frame4, text="Please enter time")
    label7.pack()
    t = Entry(frame4, text="Please enter time")
    t.pack()
    buttonmain = Button(frame4, text = "Finlise", command = finalProgram)
    buttonmain.pack()
    global x
    x =(p*r*t)/100
def finalProgram():
    frame2.destroy()
    frame3.destroy()
    frame4.destroy()
    global x
    newlabel = Label(frame5, text = x)

x = 0.0
root = Tk()
frame = Frame(root)
frame.grid(row=0,columnspan = 2)
mainWindow()
frame2 = Frame(root)
frame2.grid(row = 0, columnspan =2)
frame3 = Frame(root)
frame3.grid(row =1, columnspan =2)
frame4 = Frame(root)
frame4.grid(row=2, columnspan =2)
frame5 = Frame(root)
frame5.grid(row=0)

root.mainloop()