TinEngine的声明

引言

TinEngine基于tkinter开发,是适用于tkinter的富文本渲染框,富文本标记为Tin标记语言。通过在tkinter窗口中使用TinText组件,可以实现类似HTMLlayout的效果,从而进一步提升tkinter界面程序UI部分开发的效率。

在CSDN中,我创建了Tin标记语言专栏,包含用Python实现Tin,以及Tin使用技巧两种类型的文章。

但至少在这一篇文章之前,我并没有详细谈到为什么开发TinEngine,也没有讲明为什么用tkinter开发TinEngine。那么接下来,我将给出基于tkinter开发TinEngine的几点理由。

为何基于tkinter开发TinEngine

tkinter基于tcl/tk,本身使用的是系统标准组件,像显示HTML、视频、高级表格等,原生tcl/tk是无法做到的,而且很多人认为tkinter根本做不到。那么,为什么要基于这一个GUI库来开发TinEngine?

以下是几点非常重要的原因。

初学者对tkinter的三分钟热情

在学习Python的gui时,几乎所有初学者使用都tkinter,开发一些简单的界面程序或者是游戏。但是,等时间一长,很多初学者就会感到tkinter能够使用的组件,跟wx和qt比起来很少,而且功能也较少。这些人便纷纷使用像wxpython、pyqt一样的GUI库。然而,此时他们根本没有将GUI熟练掌握,也就是本身对tkinter一知半解,就往更复杂的东西探索。

这种思想无疑错误得十分严重

我不是说wx和qt不好,而是因为就qt而言,一般的个人项目根本用不到,最多用到wxpython。况且连tkinter都掌握不了,怎么去掌握更加复杂的wxpython?

很多初学者直接或很快就学习wx和qt,仅仅是看到它们的功能和原生组件比tkinter丰富,但是忽略了几个问题:这么丰富的功能,用得到吗?wx和qt做出的项目,光是GUI就几十M,上百M也太正常不过,但是,有这么多的支持项,与自己开发的项目能用到的功能相比,值吗?

而且,tkinter不只用于初学者,既然tkinter存在,那么必定有它的重要意义。

现在我可以告诉大家,tkinter通过编写新功能,可以实现如下功能:

  1. 显示标准HTML5(外部程序miniblink
  2. 播放视频(运用第三方库、系统组件)
  3. 高级表格
  4. 拖拽、可改变大小组件(拖拽调节高级组件
  5. 显示3D(运用第三方库)
  6. 还有很多……

而且,实现这些功能的依赖,比wx和qt小得多了,并且需要什么添加什么依赖。当然,有些wx和qt原生就有的东西,比tkinter额外编写的东西,确实要好。但是,当能够用到对wx和qt自己都是高级的组件的时候,难道对tkinter还是一知半解吗?如果不是,那为什么在一些论坛上,时常能够看到一些人对关于wx或者是qt如何布局、组件的概念、组件参数、组件基础方法提出问题?这不都应该早就掌握吗?

不是tkinter不够好,是某些人不愿意钻研(我知道肯定有人说,哪有什么时间钻研,我想问哪有什么时间在没有地基的高楼上安装阻尼器)。开发TinEngine,就是为了证明,tkinter这个GUI的存在,有它自己的意义。

tkinter缺乏新的布局机制

tkinter目前(常见的)有三种布局机制(不是方式)。

第一种是常规布局,如:pack, grid, place。这是tkinter本身的。

第二种是以xml(和类似文件)为载体,对其进行解析,如:tk-builder(第三方库)

第三种是基于列表和pack/grid的声明式布局,如:ticklish-ui(第三方库)

这三种虽然用途广泛,但缺少像HTMLlayout那样以文字阅读为主体,附加功能的渲染式布局机制。

TinEngine,也因此而开发。(这几种布局机制各有优劣)

tkinter开发效率

即使tkinter拥有可视化编辑器——PAGE,但也只能够解决UI部分,缺少功能部分。包括上面提到的三种布局方式,都只能够解决UI部分的工作量大的问题。

TinEngine并没有将UI和功能结合,否则就回到的GUI的原点。但是,TinEngine在提供良好的UI渲染方案的同时,允许同步嵌入功能组件,从而触发功能代码。因为TinEngine的主要思想:让读者决定除了渲染之外的一切。此外,TinEngine基于tkinter中除了Canvas之外最强大的控件——Text,并以此开发Tin标记的核心——TinText。

Tin中,使用<code>载入Python、Tcl或VBS代码段。通过tins拓展添加使用代码段的功能交互组件。

使用TinEngine开发界面程序,UI部分就像是写文章,功能部分可以正常不过地无缝嵌入,使用标签还可以进一步简化功能代码的复杂程度。

除此之外,TinEngine基于自动分析标记文本套用各类渲染格式,而且使用gcc编译后的pyd文件发布,无论是UI编写速度还是渲染速度,一定比用纯tkinter快。

结语

说了这么多,到底也就是“tkinter的证明”和“tkinter的实践”,在实验和应用中不断地证明和实践,不断地提升tkinter开发能力。

上面的部分言辞(特别是对某些tkinter初学者)可能有些欠妥,只是为了明确我的立场,若措辞不足,还望大家原谅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值