python - 请解释下面的循环
问题描述
我通过查看我的课程视频制作了一个 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
解决方案
这个 for 循环基本上用于在窗口上布置按钮。
for KeyRow in keys :
重复循环中的所有代码 列表中存在键行的次数keys
(在这种情况下,有 5 行)
col = 0
并row = 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 轴上的行位置移动一个。
希望这能回答你的问题!
推荐阅读
- reactjs - 上传到 firebase:TypeError:uploadTask.on 不是函数
- javascript - 通过 UIKit 模式向数组添加元素在 vuejs 中不起作用
- scala - 执行捕获变量的嵌套函数分配
- kotlin - Kotlin 泛型类型不匹配
- kubernetes - 如何设置 Kubernetes 以支持动态添加的子域?
- excel - 交叉引用具有工作表编号的单元格
- elasticsearch - 查找日志文件的 grok 模式
- node.js - 在 node.js 类中找不到方法
- .net - 如何创建 Microsoft Azure 移动应用程序
- flutter - ParentDataWidget 的使用不正确。- 如何解决?