繁体   English   中英

python 3.6.1,Tkinter中的无限拉长的窗口

[英]Infinitely elongated windows in python 3.6.1, Tkinter

我正在制作一个具有各种方程式的医疗计算器。 这有一个小的菜单,用户可以从一个菜单转换为另一个菜单。 但是,当我对此进行测试时,我发现GU​​I窗口越来越长,而不会破坏预先创建的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM