我在做一个有各种方程式的医学计算器。 这有一个小菜单,用户可以从一个转换到另一个。 但是当我测试这个时,我发现GUI窗口越来越长而没有破坏预先创建的F框架
我不知道发生了什么。你能解释一下这个问题吗? 谢谢
这是缩写代码
import tkinter
import math
top = Tk()
F = Frame(top, width = 512, height = 512)
F.pack()
def temp():
print("This is temporary function")
def fena():
F.destroy()
making_fena()
def making_fena:
F= Frame(top)
F.pack()
.....
#every widgets are attached to this F frame by grid.
....
def bsa():
F.destroy()
making_bsa()
def making_bsa():
F.destroy()
F = Frame(top)
F.pack()
....
#every widgets are attached to this F frame by grid.
...
#Making a menu
#Basic menu 1: Calc - FeNa - GFR - BSA
#Basic Menu 2: Quit
menubar = Menu(top)
calcmenu = Menu(menubar, tearoff = 0)
calcmenu.add_command(label = "FeNa", command = fena)
calcmenu.add_command(label = "GFR", command = temp)
calcmenu.add_command(label = "BSA", command = bsa)
menubar.add_cascade(label = "Calc", menu = calcmenu)
menubar.add_command(label = "Quit", command = top.quit)
top.config(menu = menubar)
#loop running
top.mainloop()
我故意对每个等式使用相同的帧名称(F)。我想当我从一个方程到另一个方程时,它不会出错。这是我的严重错误吗
让我们看一个函数的例子
此函数包含对
F
的赋值,并且没有F
的全局声明,因此F
是此函数中的一个局部变量——与全局F
变量完全无关。每次销毁并重新创建F
,实际上就是在销毁原始的全局F
,并在窗口中添加一个全新的本地F
。因此,无限增长。您需要像这样向每个函数添加global F
相关问题 更多 >
编程相关推荐