当前位置: 首页 > news >正文

用AI为TinUI写日期滚动选值框

用AI为TinUI写日期滚动选值框

  • 引言
  • 提问方式
  • 结果
    • GLM-4.7
    • DeepSeek-r1
    • MS Copilot
    • Gemini
  • 效果

引言

TinUI滚动选值框picker的构建介绍见文章tkinter绘制组件(40)——滚动选值框_滚动选择框-CSDN博客。

日期滚动选值框无论是功能目的、交互逻辑、样式外观,其实就是picker,只不过,每个月的天数是不同的,闰年平年的二月份天数也不同,选项的变动就使得TinUI本身的picker很为难。所以,我决定单独为TinUI写一个拓展控件。当然,这个决定其实很早就有了,但是,我懒得写😋,由于各种各样的事情耽误了。

以下一行是本文在笔记一栏而非正文栏目的原因。

虽然成果可用,但是本文仅供娱乐。

随着AI的发展,虽然也就那样,依靠大模型自身努力和已经写好的picker代码,我能快速完成一个基础可用的TinUIDatePicker吗?

登场的选手有:

  • GLM-4.7(深度思考
  • DeepSeek-r1
  • MS Copilot(smart
  • Gemini3(思考

Smart-Space/TinUIPicker: TinUI高级滚动选择器

截止本文章发表,TinUIPicker下只实现了日期选择器时间选择器其实很简单


提问方式

将TinUI的picker代码单独列入md文件(见仓库的prompt.md文件),询问内容如下:

这里面是TinUI的picker源代码,self为BasicTinUI(相当于tkinter画布)。我现在想创建一个新控件,即日期选择器,请分析源码,理解,并将日期选择器编写为一个类,包含年月日、注意闰年

挺随意的。提示词可能会影响模型工作,但是大家都笑你的时候偏偏你最好笑就非常有节目效果。


结果

忘记留证了,描述一下吧🤯。

GLM-4.7

选择列表界面正确,但是按钮位置错位甚至变形,即原本的按钮重新布局代码有问题。我不知道glm改这玩意干啥。

# 以下是Gemini生成片段,跟picker一致# 调整按钮背景框 (源码中的 coords 调整逻辑)mid=(width-9)/2bar.coords(ok[1],(9,height-35,mid-5,height-35,mid-5,height-9,9,height-9))bar.coords(ok[2],(8,height-34,mid-4,height-34,mid-4,height-8,8,height-8))bar.coords(no[1],(mid+5,height-35,width-9,height-35,width-9,height-9,mid+5,height-9))bar.coords(no[2],(mid+4,height-34,width-8,height-34,width-8,height-8,mid+4,height-8))

另外,所有月份都是31天,还能选🤣。

DeepSeek-r1

按钮位置跟picker一样,严丝合缝,但是选择列表宽出了背景元素。很奇怪,picker源码的背景元素的尺寸是通过所有元素的尺寸计算出来的,d老师跟glm一样,对我的设计进行了亿点修改。

同样的,月份都是31天,不过不合法的日期选了之后不会触发回调,但是一个2026-02-31就很难绷🙃。

MS Copilot

小丑,不如人意。

  1. 三个列表选择器中间本来就俩间隔,完了还不一样
  2. 不像deepseek选择器右移5单位,copilot的选择器斜向左上漂移
  3. 选择认定按钮冒出“确定”两个字,这两个字从来没出现过,完了还在背景元素的底边正中间
  4. 根本没有取消按钮,被移出窗口可视范围了

但是copilot的动态天份变动对了呀🫡。

Gemini

正常。甚至,gemini是唯一一个注意到__ui_polygon__ui_toplevelBasicTinUI私有方法的模型,需要使用_BasicTinUI__ui_<...>调用。

当然,配色参数漏了一大堆,以及忽略了TinUIString的面板布局结构,不过已经很不错了,这些我自己加上去就行。

此外,我对样式尺寸进行了小修,就完成了一个基本可用的TinUI日期选择器。


效果

我在datepicker.py提供了两个配色表:pickerlightpickerdark

dark样式

http://www.jsqmd.com/news/323486/

相关文章:

  • 原神帧率解锁工具完全掌握:从入门到精通的全方位指南
  • Lingyuxiu MXJ LoRA快速部署:WSL2环境下Ubuntu系统完整安装流程
  • React Native全面讲解:Flexbox布局在移动端的应用
  • GLM-4.6V-Flash-WEB实测:一张菜单问出最贵菜是什么
  • NS-USBLoader完全指南:Switch玩家必备的文件管理神器
  • 屏幕翻译效率工具:无缝体验的跨语言内容解析方案
  • Youtu-2B学术研究价值:轻量模型创新点解析
  • ArcGIS与GuidosToolbox协同下的MSPA生态源地精准提取实践
  • 采样步数影响大吗?Live Avatar参数对比实验
  • 3步打造个人音乐中心:MusicFree插件系统完全指南
  • Qwen3-Embedding体验报告:轻量级嵌入模型值得入手吗?
  • 突破限制:VMware macOS跨平台运行完全指南
  • AUTOSAR网络管理休眠流程的完整指南
  • Context Engineering与Prompt Engineering实战对比:如何选择正确的AI交互设计方法
  • 4个维度解析轻量级办公:wechat-need-web解决方案的技术实现与场景价值
  • Pi0多场景机器人控制案例:物流分拣、桌面操作、教育编程实训
  • 24G显存也能流畅运行:WuliArt Qwen-Image Turbo显存优化揭秘
  • NCM音频格式解密:从技术困境到解决方案的探索之旅
  • ChatTTS 指定音色实现原理与实战:从语音合成到个性化定制
  • 本地部署translategemma-4b-it:保护隐私的AI翻译解决方案
  • 如何突破硬件限制?大屏游戏串流技术全解析
  • MGeo开箱即用,地址匹配再也不踩坑
  • 淘宝接入第三方智能客服实战指南:从零搭建到生产环境部署
  • Qwen3-0.6B调用全攻略,小白一次就成功
  • 3D模型转换技术指南:跨软件协作的完整解决方案
  • 3步攻克视频抓取难题:零基础也能掌握的黑科技
  • 零基础秒会字幕翻译:告别外语视频观看障碍的终极指南
  • Windows右键菜单管理效率提升指南:从臃肿到精简的全流程优化
  • 智能客服微服务架构实战:从技术选型到生产环境部署
  • 从零构建工业级RS-485通信:STM32F103与HAL库的DMA实战解析