无法找出嵌套的for循环部分及其在此代码中的工作方式

时间:2019-06-09 16:40:58

标签: python python-3.x nested-loops

我正在尝试找出在网上找到的这段代码。我不明白嵌套循环实际上如何在此特定的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()

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,您会想知道如何通过以下循环语句来完成我们的迭代。

for use_geometry in (0, 1):
    for show_buttons in (0,1):

原因是对于use_geometry = 0use_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()实例,因此总共创建了四个实例。