tkinter-TinUI-xml实战(2)成语接龙

引言

使用TinUIXml来为TinUI编写界面,大大缩减了调试时间,也为创建复杂界面提供了较大的可能。在这里,开始创建第二个项目——成语接龙。

成语接龙代码量较大,这里只着重说明TinUIXml部分。

声明

本项目功能代码初版为网络搜索项目,具体作者不详。功能代码部分已经被我做大幅更改,属于我的原创内容。

本项目需额外使用pypinyin库。本项目使用的TinUI为我开源并维护在GitHub上的主文件——TinUI.py。当然,使用PYPI中下载安装的tinui也可以。

文件结构

本次项目使用的文件结构如下:

在这里插入图片描述

  • 模块文档 - 词库文件
    • new_ciku.txt - 新增词库
    • szck1.txt - 词库1
    • szck2.txt - 词库2
    • 私有词库.txt - 个人词库
  • mylogo.ico - 图标文件
  • tinui.py - TinUI界面核心支持
  • ui.xml - 主界面
  • 成语接龙.py - 本次项目文件

编写界面(ui.xml)

TinUIXml的介绍一文里,出现了成语接龙界面。那一个界面模板就是我们马上要编写的界面效果,分为三个部分:

  1. 显示与输入框
  2. 主要的两个操作按钮:确定、退出
  3. 辅助功能按钮

以下是ui.xml的内容:

<tinui>
    <line x='512'>
        <label text='输入一个成语开始游戏:' font='宋体 48' outline='#f0f0f0' anchor='n'>tlabel</label>
    </line>
    <line x='10'>
        <entry width='940' fg='blue' activebg='powderblue' font='微软雅黑 64'>entry</entry>
    </line>
    <line x='512'>
        <button text='确认成语' font='宋体 32' fg='cyan' command='self.funcs["findword"]' anchor='n'></button>
    </line>
    <line x='512'>
        <button text='失败退出' font='宋体 32' fg='red' command='self.funcs["closewindow"]' anchor='n'></button>
    </line>
    <line x='70'>
        <button text='关于编写' font='宋体 18' command='self.funcs["gybx"]'></button>
        <button text='版本说明' font='宋体 18' command='self.funcs["bbsm"]'></button>
        <button text='词库信息' font='宋体 18' command='self.funcs["ckxx"]'></button>
        <button text='词库输入' font='宋体 18' command='self.funcs["cksr"]'>cy-input</button>
        <button text='成语查询' font='宋体 18' command='self.funcs["check_web"]'>cy-web</button>
        <button text='检测帮助' font='宋体 18' command='self.funcs["find_chengyu"]'>cy-help</button>
        <button text='添加词库' font='宋体 18' command='self.funcs["find_newciku"]'></button>
        <button text='开源项目' font='宋体 18' command='self.funcs["find_kaiyuan"]'></button>
    </line>
</tinui>

编写TinUIXml-IDO

这是第一次出现TinUIXml-IDO这个词,在TinUIXml的介绍文档里面没有提到。这个世界上就是将TinUIXml融入Python的三个过程:in, during以及out。以后我会继续使用这个简写。

由于篇幅限制以及主题选择,这里不会给出完整代码。但先别着急,我们先来完成界面编写。

#I(n)D(uring)O(ut)
#=====TinUI界面
mainu=BasicTinUI(root)
with open('ui.xml',encoding='utf-8',mode='r') as f:
    xml=f.read()
xui=TinUIXml(mainu)
mainu.pack()
#=====获取接口-in
if os==0:
    findtime_max=50
    findword=findword_0
elif os==1:
    findtime_max=10
    findword=findword_1
elif os==2:
    findtime_max=5
    findword=findword_2
xui.funcs['findword']=findword
xui.funcs['closewindow']=closewindow
xui.funcs['gybx']=gybx
xui.funcs['bbsm']=bbsm
xui.funcs['ckxx']=ckxx
xui.funcs['cksr']=cksr
xui.funcs['check_web']=check_web
xui.funcs['find_chengyu']=find_chengyu
xui.funcs['find_newciku']=find_newciku
xui.funcs['find_kaiyuan']=find_kaiyuan
#=====渲染界面-during
xui.loadxml(xml)
x1,y1,x2,y2=mainu.bbox('all')
mainu['width']=x2-x1+50
mainu['height']=y2-y1
#=====输出接口-out
MyEntry=xui.tags['entry'][0]
vlabel=xui.tags['tlabel'][0]
cy_input=xui.tags['cy-input'][2]
cy_web=xui.tags['cy-web'][2]
cy_help=xui.tags['cy-help'][2]
#==========

完整代码

项目代码量不适合放在博客里。

这个成语接龙有以下特性:

  1. 可选三种难度(简单、严格、多元)
  2. 严格模式会狭义匹配最后一个字,并且任何一个难度都不是单一套路
  3. 多元模式允许同字或同音
  4. 能够提供词库帮助(有次数限制)
  5. 可以自定义词库
  6. 可以输入新词库
  7. 可以查询成语
  8. ……

所以,实现以上功能需要实现较多的代码。

这个项目并不是一直在维护,只是放在了GitHub上,供大家翻阅参考。

GitHub::tkinter-chengyujielong项目地址。

效果

在这里插入图片描述

可以看到,在这个游戏(严格-多元模式)当中,既可以同字,也可以同音,而且还不只有四字成语。很好玩。

简单对应简答模式,普通对应严格模式,严格对应多元模式


结语

这是使用tkinter和TinUI实现了一个游戏程序,当然,还可以在现有界面和词库上增加更多的成语小游戏:

  • 九宫格选词拼成语
  • AI成语接龙
  • ……

🔆tkinter创新🔆

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值