首页 > 解决方案 > 请解释下面的循环

问题描述

我通过查看我的课程视频制作了一个 GUI 计算器,但我无法理解下面代码中的“for 循环”在做什么。

 try:
    import tkinter
except ImportError: # python 2
    import Tkinter as tkinter

keys = [[('C', 1), ('CE', 1)],
        [('7', 1), ('8', 1), ('9', 1), ('+', 1)],
        [('4', 1), ('5', 1), ('6', 1), ('-', 1)],
        [('1', 1), ('2', 1), ('3', 1), ('*', 1)],
        [('0', 1), ('=', 1), ('/', 1)],
        ]

mainWindowPadding = 8

mainWindow = tkinter.Tk()
mainWindow.title("Calculator")
mainWindow.geometry('640x480-8-200')
mainWindow['padx'] = mainWindowPadding

result = tkinter.Entry(mainWindow)
result.grid(row=0, column=0, sticky='nsew')

keyPad = tkinter.Frame(mainWindow)
keyPad.grid(row=1, column=0, sticky='nsew')

row = 0
for keyRow in keys:
    col = 0
    for key in keyRow:
        tkinter.Button(keyPad, text=key[0]).grid(row=row, column=col, columnspan=key[1], sticky=tkinter.E + tkinter.W)
        col += key[1]
    row += 1

标签: pythontkinter

解决方案


这个 for 循环基本上用于在窗口上布置按钮。

for KeyRow in keys :

重复循环中的所有代码 列表中存在键行的次数keys(在这种情况下,有 5 行)

col = 0row = 0用于定位窗口上的按键。

for key in keyRow:

重复循环中的所有代码键在一行中出现的次数(例如,第一行有 2 个键,因此循环将重复所有子代码两次等...)

tkinter.Button(keyPad, text=key[0]).grid(row=row, column=col, columnspan=key[1], sticky=tkinter.E + tkinter.W)

这是为了定位键。

col += key[1]每次将键放置在窗口上时,将 y 轴上的键位置移动一个,并且row += 1每当将一行键放置在窗口上时,将 x 轴上的行位置移动一个。

希望这能回答你的问题!


推荐阅读