Tag Archives: GUI

CD1:BORLAND 宝典

图形界大佬 John Carmack 在推特上呼吁大家,现在应该有意识的保存你的开发环境,这样多年以后你想重新构建你的软件时才不会慌脚乱手,因为通常每过几年你常常会发现,自己之前的老代码已经没有合适的环境编译了: 今天互联网上的内容,由于各种原因,正在以越来越快的速度消失,而习惯什么都从网上找的新一代网民们,却并没有备份和记录的习惯及意识。不远的将来,会有一天,当你特别想找某个工具却搜尽互联网你都找不到时,就麻烦了。 这是一张兼具收藏价值和实用价值的光碟,收录了 Borland 公司全胜时期的著名桌面开发工具:C++ Builder 6 和 Delphi 7,以及各种配套书籍和资源,都是全网最好的版本(原版 CD 安装文件加最新补丁)。别看这两款软件老,因为生成可执行独立小巧,至今依然可以用他们做出交互尚可的桌面应用。 他们最大的特点,是可以让你轻松开发出 1MB 以内的无依赖的桌面软件:(点击 Read more 展开)

Loading

Posted in 未分类 | Tagged , | Leave a comment

用 Lazarus 做界面合适吗?

也许你没留意,很多你经常用的桌面软件是用 Lazarus 开发的。 作为 Delphi 的开源替代品,我一直是比较喜欢 Lazarus 的,虽然有些小众。技术有两种,有些是用来挣钱养家,用来赶进度大规模集团作战的;还有一类是出于兴趣,单纯觉得好玩,会不自觉的有空就翻出来当爱好的,比如 Lazarus 就是一个很好玩的玩具。 因此不用成天纠结 “谁是 GUI 天下第一” 之类内卷的问题,抱着轻松和评测+鉴赏的心情了解下或许也不错。 在此之前,得先说两句 Delphi,姚冬老师,知乎编程板块无人不知,给了 Delphi 这样的评价: Delphi 是神作,它在 RAD(快速应用开发)领域长时间没有对手,直到BS架构取代CS架构。Delphi 的特点就是简单、开发快,单纯就写个基本可用的应用来说,可能至今都没有比他更快的。 为啥作为国内最早使用 Qt 的人,却会给 Delphi 那么高的评价呢?中小应用开发 “至今没有比他更快的技术”这么高的评价,必然是有原因的,无独有偶,另一位 Qt 大神也发表示过对 Delphi 继承者 Lazarus 的喜爱: Delphi 的继承人有两个,第一个是 C# Winform,几乎是把 Delphi … Continue reading

Loading

Posted in 编程技术 | Tagged | Leave a comment

给 Qt5 引入 C# / Delphi 的 Anchor Layout

在前文 用 MFC 写 GUI 程序是一种什么样的体验? 中提过 Anchor Layout 可以很简单的设定让控件跟随窗口四条边大小变化的策略: 比如右下角的两个按钮,设置的 anchor 是 “right,bottom” 他们在窗口扩大缩小时,会跟右和下两条边保持恒定距离,左上角的文字是 “left,top” 的 anchor,他会保持恒定的左边距和上边距,中间文字框的 anchor 是四个方向的 “left,top,right,bottom” 他会和窗口四条边框保持相同边距,因此会随窗口扩大而扩大。 这种布局方式最早是 Delphi / C++ Builder 引入的,非常简单实用,后来被 C# Winform 原封不动的抄了过去,而 QtWidgets 里用了另一套规则,虽然用起来更精细了,却没有 anchor layout 这么简单直白。 虽然 QtQuick 和 QGraphicsItem … Continue reading

Loading

Posted in 编程技术 | Tagged | Leave a comment

用 MFC 写 GUI 程序是一种什么样的体验?

本文来自知乎问题:MFC、WTL、WPF、wxWidgets、Qt、GTK 各有什么特点? 感觉我说了太多 Qt 的事情了,今天只说一下 MFC ,到底过时在哪里,都在说 “MFC 就是 xxx” 类似的话,我来补充点细节,增加点感性认识,到底 MFC 过时在哪里?想要用好 MFC 可以怎么办? 虽然 MFC 也有 DIALOG 的设计器,似乎可以拖一下控件,做个 hello world, 计算器之类的好像也很简单,但是稍微复杂那么一点就麻烦了,比如布局,MFC 里的控件只能设置绝对坐标和大小,那么如果你的窗口扩大或者缩小了,想自动改变内部特定控件的大小和位置怎么办?比如 C# 里随便设置一下各个控件的 docking 和 anchor 就能: C# 里给控件设置 docking/anchor:窗口变大变小后就能自动调整控件的位置和大小 就能让某些控件随窗口变大而移动,某些控件随窗口变大而变大,而某些控件不变,这在任何 GUI 库里都是最基础的功能,都可以在设计器里点两下就做到的事情,MFC 却需要重载 WM_SIZE, WM_SIZING 消息来自己写代码每次手工计算所有控件的新坐标和大小,想写的通用点,还得上千行的代码,枚举所有子控件,根据额外信息重新计算位置大小,虽然 … Continue reading

Loading

Posted in 编程技术 | Tagged | 1 Comment

怎么样打包 pyqt 应用才是最佳方案?

早先看一堆人说 PyQt 打包麻烦,部署困难的,打出来的包大(几十兆起步),而且启动贼慢,其实 Python+PyQt 打包非常容易,根本不需要用什么 PyInstaller,我手工打包出来的纯 Python 环境只有 5MB,加上 PyQt 也才 14MB。 很多人用 PyInstaller 喜欢加一个 -F 参数,打包成一个单文件: 这样的单文件看起来似乎很爽,其实他们不知道,这其实是一个自解压程序,每次运行时需要把自己解压到 temp 目录,然后再去用实际的方式运行一遍解压出来的东西: Process Explorer 把雷达图标拖动到 pyqt_hello.exe 的窗口上,可以看到有两个 pyqt_hello.exe 的文件,外面那个是你打包出来的,里面那个才是真正的程序(虽然可执行都是一个),看看它下面依赖的 python310.dll 是在哪里?这不就是一个临时解压出来的目录么: 看到没?这就是你 PyInstaller 打包出来的 30MB 的程序,每次运行都要临时解压出 71MB 的文件,运行完又删除了,那么如果打包出来的可执行有 100MB,每次运行都要释放出 200-300 MB 的东西出来,所以为什么 … Continue reading

Loading

Posted in 编程技术 | Tagged , | 1 Comment

桌面开发用 Tkinter/wxPython/PyQt 哪个好?

Python 有很多 GUI 框架,比如著名的 Tkinter,wxPython 和 PyQt,那么想用 Python 开发桌面软件的话选哪个更好呢?作为三个都用过的人先给个结论,不用纠结,直接选 PyQt 即可。 很多人说 Tkinter 简单无依赖,没错,但这就是 tkinter 唯一的仅存的优点了,但是请大家注意,Tkinter 的这个 “简单”,是指 “功能少和效果单一”,不是写程序简单明了,真正写起程序来还是 PyQt 最简单清晰。 有些东西你学出来就过时了,比如 “算盘”,比如 Tkinter 和 wxPython;而有的东西你学会了,即便不吃这碗饭,不靠它涨工资,也能在今后一二十年持续受益,比如练习打字速度,比如背单词,比如学习 PyQt。 对于桌面开发,天下武功那么多,PyQt 既是最正统的门派,同时又是一系列综合技术的组合,它近可以同 C++ Qt 无缝整合,解决性能相关的东西;退,又有基于 chromium 的 QtWebEngine ,能在适合跑页面的部分用 html/js 来写页面,并和 python 双向调用,实现类似 … Continue reading

Loading

Posted in 编程技术 | Tagged , | Leave a comment