我正在尝试找出在网上找到的这段代码。我不明白嵌套循环实际上如何在此特定的tkinter程序中提供结果(四种情况)。 为了理解它,我在关键部分使用了打印语句,但是我越投入越多,就会感到困惑。
有人可以解释一下代码的工作原理吗?
from tkinter import *
class App:
def __init__(self, root, use_geometry, show_buttons):
fm = Frame(root, width=300, height=200, bg="blue")
fm.pack(side=TOP, expand=NO, fill=NONE)
if use_geometry:
root.geometry("600x400") ### (1) Note geometry Window Manager method
if show_buttons:
Button(fm, text="Button 1", width=10).pack(side=LEFT)
Button(fm, text="Button 2", width=10).pack(side=LEFT)
Button(fm, text="Button 3", width=10).pack(side=LEFT)
case = 0
for use_geometry in (0, 1):
for show_buttons in (0,1):
case = case + 1
root = Tk()
root.wm_title("Case " + str(case)) ### (2) Note wm_title Window Manager method
display = App(root, use_geometry, show_buttons)
root.mainloop()
答案 0 :(得分:1)
如果我正确地阅读了您的问题,您会想知道如何通过以下循环语句来完成我们的迭代。
for use_geometry in (0, 1):
for show_buttons in (0,1):
原因是对于use_geometry = 0
和use_geometry = 1
,我们将运行内部循环,导致以下四种情况:
# First outer iteration, first inner
{ use_geometry = 0, show_buttons = 0 }
# First outer iteration, second inner
{ use_geometry = 0, show_buttons = 1 }
# Second outer iteration, first inner
{ use_geometry = 1, show_buttons = 0 }
# Second outer iteration, second inner
{ use_geometry = 1, show_buttons = 1 }
# Done
总共四个组合。对于这四个组合中的每一个,您都将创建一个新的Tk()
和App()
实例,因此总共创建了四个实例。