当前位置:首页>python>python案例教程:用turtle做一个 《python命令大全查询》软件

python案例教程:用turtle做一个 《python命令大全查询》软件

  • 2026-06-30 05:46:42
python案例教程:用turtle做一个 《python命令大全查询》软件

这个项目挺有意思的地方在于,它用 turtle 这个画图库来做了一个有交互界面的小软件。turtle 大家一般用来画图,拿它做 UI 不是主流选择,但代码量少、依赖少,对初学者来说反而是个不错的切入点。

【点击视频预览程序效果】

整个项目分 5 个步骤递进完成,每一步只加一个新东西,最终拼出来一个完整的程序。下面按这 5 步走一遍,重点讲每一步加了什么、为什么这样加。


第一步:先把窗口搭起来

fromturtleimport*win = Screen()win.setup(1050530)win.title("命令查询软件")win.bgpic("Huiliu_x_BG.png")done()

这一步什么功能都没有,就是验证环境——窗口能不能弹出来,背景图能不能加载,尺寸对不对。

win.setup(1050, 530) 定好了画布大小,后面所有坐标都在这个范围内算。turtle 的坐标原点在窗口中心,x 向右为正,y 向上为正,所以左下角大约是 (-525, -265)。

done() 是让窗口保持开着,不加的话程序跑完窗口直接关了。


第二步:把菜单画出来,顺便摸清坐标系

defgo(xy):penup()goto(xy)pendown()defwrite_menu():forniinenumerate(list_menu):textalignxysize = iifn!0text = str(n+". "+textgo(xy)write(textalign=alignfont=("楷体"size))y = 100y1 = 50list_menu = [    ("命令展示软件""center"-28017020),    ("通用函数",     "left",   -350y-y1*015),    ("字符串函数",   "left",   -350y-y1*115),    ("列表函数",     "left",   -350y-y1*215),    ("字典元组集合""left",   -350y-y1*315),]write_menu()win.onclick(pt)

菜单数据结构的设计

菜单每一项存了 5 个信息:文字内容、对齐方式、x 坐标、y 坐标、字号,打包成一个元组放进列表。这样 write_menu() 只需要遍历一次,每项解包拿到这 5 个值,统一处理。

如果不这样做,每个菜单项单独写一行 goto + write,改一个坐标就要改很多地方。把数据集中在 list_menu 里,逻辑只写一遍,后面加菜单项只往列表里追加就行。

y 坐标的算法

y = 100y1 = 50# y-y1*0 = 100, y-y1*1 = 50, y-y1*2 = 0 ...

菜单项从上往下排列,每项间距 50 像素。用 y - y1*n 计算每项的 y 坐标,比手动填 100、50、0、-50 更清晰,间距想改只改 y1 这一个数。

enumerate() 给菜单项自动编号

forniinenumerate(list_menu):ifn!0text = str(n+". "+text

遍历列表时同时拿到下标 n 和内容 i。n=0 是标题,不加编号;n=1 开始的项自动变成 "1. 通用函数"、"2. 字符串函数" 这样的格式。不用手动在数据里写编号,后面调整顺序也不会出错。

win.onclick(pt) 是调试用的

defpt(xy):print(xy)

点哪里打印哪里的坐标。做 UI 时不可能凭空算出每个元素该放哪,先点一下看坐标,再填进去,这个函数贯穿整个开发过程。


第三步:读文件,显示命令,支持翻页

这步加了核心功能——从 txt 文件读取命令列表,分页显示,按下键翻页。

defload_file(file):f = open(file"r"encoding="utf-8")list1 = f.readlines()f.close()returnlist1

readlines() 一次读完整个文件,返回一个列表,每行是一个元素,末尾带换行符 \n。后面显示时用 .strip() 去掉这个换行符。

分页显示逻辑

N = 0# 当前从第几条命令开始显示N_max = 10# 每页最多显示多少条defshow_cmd():globalNnum = len(list_cmd)tracer(0)P1.clear()# 显示页码P1.goto(20-240)P1.write(f"第 {N//N_max+1} 页 / 共 {num//N_max+1} 页"font=("楷体"15))xy = -130200foriinrange(N_max):P1.goto(xy)text = list_cmd[N].strip()P1.write(textfont=("楷体"15))y -= 40N += 1ifN>num:N = 0breaktracer(1)

N 是全局变量,记录当前读到哪一条了。每次按下键调用 show_cmd(),从第 N 条开始取最多 10 条显示,然后 N 向前推 10。读到末尾时 N 归零,下一次从头开始——实现了循环翻页。

页码算法 N//N_max+1 值得看一下:N=0 时显示第 1 页,N=10 时显示第 2 页,整除后加 1。总页数同理。

tracer(0) 和 tracer(1) 是干什么的

turtle 默认每画一笔都刷新屏幕,内容多了就能看到文字一行一行地出来,有明显的闪烁感。tracer(0) 关掉自动刷新,等所有内容都画完之后,tracer(1) 重新打开,一次性显示出来,视觉上干净很多。

为什么要单独建一个 P1 = Pen()

turtle 里默认有一个全局画笔,但这里需要随时 P1.clear() 清掉上一页的内容,如果用全局画笔,菜单也会被清掉。单独建一个 Pen 对象给命令显示区域用,清理互不干扰。


第四步:数字键切换分类,lambda 传参

精简版在第三步基础上加了两件事:数字键 1~6 直接切换分类,show_cmd 改造成既能翻页又能切换分类。

defshow_cmd(event):globalNlist_cmdifevent!0:name = list_menu[event][0]list_cmd = load_file(name+".txt")N = 0# 后面显示逻辑不变

event 传 0 表示翻页,传 1~6 表示切换到对应分类。切换时根据菜单项名称拼出文件名("通用函数" → "通用函数.txt"),重新加载文件,并把 N 归零从头显示。

lambda 的用法

按键绑定函数时,onkeypress 只接受无参数的函数。但 show_cmd 需要传 event 参数,这里用 lambda 包一层:

win.onkeypress(lambdashow_cmd(1), "1")win.onkeypress(lambdashow_cmd(2), "2")

lambda: show_cmd(1) 创建了一个无参数的匿名函数,调用时固定传 1 给 show_cmd。按不同数字键调用同一个函数,参数不同。

说实话我第一次看到 lambda 的时候觉得这玩意儿有点多余,直接定义六个函数不也行。后来写多了才理解,那六个函数除了数字不一样,其他完全相同,写出来纯粹是在凑行数。lambda 在这里就是省掉这些重复的壳子,只保留真正不同的那一个数字。


第五步:最终完整版,三处关键升级

对比精简版和最终版,代码量其实差不了多少,但有几处改动值得单独说一下。

升级一:用类封装 Pen 的初始化

classPen1(Pen):def__init__(self):super().__init__()self.penup()self.hideturtle()

精简版里 P1 创建完要立刻 penup() 再 hideturtle(),最终版用了两个 Pen 对象,写成 P1 = Pen(); P1.penup(); P1.hideturtle(); P2 = Pen(); P2.penup(); P2.hideturtle(),光这六行就占了不少位置。

把这两行固定的操作提进子类的 __init__,之后用 Pen1() 创建时就自动跑了,外面不用再写。

super().__init__() 那行不能省——它先把父类 Pen 自己的初始化跑一遍,不然 turtle 的底层功能没初始化,之后调 goto、write 都会出问题,在这基础上再加 penup 和 hideturtle 才安全。

升级二:启动时预加载所有文件到字典

精简版每次按数字键切换分类,都要现场打开一次文件读完再关掉。六个分类来回切,IO 操作就来回跑,其实文件内容根本没变过。最终版把这个改成程序一启动就把六个文件全读进字典:

defload_file():dict1 = {}foriinrange(17):name = list_menu[i][0]file = name+'.txt'f = open(file"r"encoding="utf-8")dict1[name] = f.readlines()f.close()returndict1DICT_cmd = load_file()

存进字典,键是分类名,值是命令列表。切换时直接查字典:

list_cmd = DICT_cmd.get(list_menu[event][0], [])

list_menu[event][0] 取出菜单项名称,作为字典的键查数据,.get(..., []) 表示找不到就返回空列表,不至于后面访问 list_cmd 时直接崩。

有个细节我觉得挺巧的:菜单里第 1 项叫"通用函数",对应的文件名是"通用函数.txt",字典的键也是"通用函数"。三个地方用的是同一个字符串,查起来不需要任何转换,菜单名就是文件名就是字典键,一个字符串串联了整条数据链。

升级三:选中项高亮,P2 单独管菜单

最终版菜单多了一个效果:当前选中的分类变成绿色。

defwrite_menu(event):globallist_cmdNtracer(0)P2.clear()forniinenumerate(list_menu):textalignxysize = iP2.pencolor("black")ifn%7!0:text = str(n+". "+textlist_cmd = DICT_cmd.get(list_menu[event][0], [])ifn == event:P2.pencolor("green")   # 选中项变绿P2.goto(xy)P2.write(textalign=alignfont=("楷体"size))N = 0show_cmd()tracer(1)

每次切换分类,P2 先 clear() 清掉旧菜单,重新画一遍,只有 n == event 的那项用绿色写。

用两个独立的 Pen 对象是有原因的:如果 P1 和 P2 用同一支笔,调 clear() 就全清了,命令和菜单一起没了。分开之后,想清命令区就 P1.clear(),菜单不动;想重绘菜单就 P2.clear(),命令区也不受影响。

另外 tracer(0) 要放在 clear 之前,不然清掉菜单那一瞬间屏幕上会有空白一闪而过,看起来会抖。等所有内容都画完再 tracer(1) 刷新,用户看到的就是直接切换过去的效果。


回头看看这五步做了什么

写完这个软件,我觉得最有意思的地方不是某个具体的函数,而是每一步改了什么、为什么改。

第一步什么都没做,就是把窗口搭起来验证环境。第二步开始想怎么存菜单数据,用列表套元组,之后改起来只动一个地方。第三步发现需要一支独立的笔来管显示区域,不然清不干净。第四步遇到 onkeypress 不接受参数的问题,lambda 解决了它。第五步发现两个 Pen 有重复初始化,顺手提进了子类。

每次都是碰到了具体的问题才加东西,不是一开始就设计好的。这可能才是一个程序从零到完整的真实过程——你不会在第一行代码就想到最后要用继承,都是写着写着发现重复了、不对了,然后改。

最后数据在程序里的走向大概是:启动时 load_file() 把六个文件一次性读进 DICT_cmd,之后按数字键 write_menu(event) 从字典里取出对应的列表给 list_cmd,再交给 show_cmd() 按页展示,按下键 N 往前推。文件只在启动时读一次,后面全走字典查询,这一点从头到尾都没变过。


参考课件与讲义

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 11:03:11 HTTP/2.0 GET : https://f.mffb.com.cn/a/488281.html
  2. 运行时间 : 0.159074s [ 吞吐率:6.29req/s ] 内存消耗:4,750.45kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=3b68d3811cc33a31df8d9ab47b446201
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000580s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000775s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000307s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000300s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000528s ]
  6. SELECT * FROM `set` [ RunTime:0.000224s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000535s ]
  8. SELECT * FROM `article` WHERE `id` = 488281 LIMIT 1 [ RunTime:0.016777s ]
  9. UPDATE `article` SET `lasttime` = 1783134191 WHERE `id` = 488281 [ RunTime:0.008969s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000367s ]
  11. SELECT * FROM `article` WHERE `id` < 488281 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000513s ]
  12. SELECT * FROM `article` WHERE `id` > 488281 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001885s ]
  13. SELECT * FROM `article` WHERE `id` < 488281 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.025955s ]
  14. SELECT * FROM `article` WHERE `id` < 488281 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.018064s ]
  15. SELECT * FROM `article` WHERE `id` < 488281 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.013104s ]
0.160722s