[英]Infinitely elongated windows in python 3.6.1, Tkinter
我正在制作一个具有各种方程式的医疗计算器。 这有一个小的菜单,用户可以从一个菜单转换为另一个菜单。 但是,当我对此进行测试时,我发现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)。 我认为当我从一个方程式转到另一个方程式时,它不会出错。 这是我的重大错误吗?
让我们来看一个示例函数...
def making_fena:
F= Frame(top)
F.pack()
此功能包含一个分配F
,并没有全球性的声明F
,因此F
在这个函数中的局部变量 -完全无关全局F
变量。 每次销毁并重新创建F
,实际上是在破坏原始的全局F
,并在窗口中添加了一个全新的本地F
这样,就无限增长。 您需要像这样向每个函数添加global F
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.