12月02, 2019

Python 做 UI 超 easy!(1)

凡事要趁早!

我是一名正宗的 80 后,在西安这座小城,度过了快乐的童年。提起 80 后的集体记忆,就不得不提到小霸王 “学习” 机,这个像老式键盘一样的东西,通过更换黄色的 “卡带” ,切换各种应用程序。

title

它的设计初衷是 “学习”,但是到了我们手里,换上各种游戏卡带:魂斗罗、马戏团、冒险岛、坦克大战 ··· ··· 整个寒暑假就这样转瞬即逝。

title

这样的老古董对现在的 90 后小家伙们可能很陌生,这在当时的地位可相当于今天的 IPhone 11 plus。我一开始也不相信这玩意儿能 “学习”,只知道游戏机很好玩。一直到 2000 年小学毕业,才缠着父亲给我买了一台。当时在商场学习机花了 100,一张游戏卡带 20,购买力折合现在得 1000 多(后来才知道,去轻工批发市场,只要一半不到的价格,心痛!),自己研究的时候才发现真的有学习功能,当时实践过的就有:

  • 五笔打字
  • 编程画图形,据网友考证,内置的是 BASIC 语言。

title

title

但是受制于贫乏的英语水平,照猫画了几次虎,除了能画几个圆圈就再也没什么收获,很快又把它变成游戏机了!后来我带着妹妹,把整个魂斗罗全部打翻版了!

可能我买的是盗版商品,质量不怎么样,不到 3 年它就归西了,去了该去的垃圾站。

这就是我与编程的第一次接触,在命运的十字路口,完美的错过了成为 “马爸爸” 的机会,要知道此时离中国互联网爆发还有 10 年!痛定思痛,最主要的原因还是对编程没有认识,对编程完全没有概念,即便上手学了一段,没有正向反馈,就也没能持续下去。

2004 年的时候,我拥有了第一台电脑,一台父亲朋友淘汰下来的 PC: 16M 内存,4G 硬盘,赛扬 CPU,刚好卡着 windows 98 的配置门槛。用这台机器,编写了我的第一个 C 语言版本的 “Hello world!”,真正开始我的编程生涯。我学习编程,也仅仅因为喜欢游戏,好奇它的原理,盘算着找到快速通关的办法,出去显摆!

每当围观比尔盖茨、乔布斯、我的男神章亦春之流的事迹,异常羡慕那些小小年纪就有机会接受到丰富的资源,进入编程领域。“一万小时” 定律在编程这种手艺上更是如此,精湛的技艺,堪比奇技淫巧的手法,都需要相当的时间投入。开始的越早就意味着可以在黄金年龄成为专家!如果 2000 年的时候(我正在上初一)我就开始学习编程,我的人生轨迹也许会是完全不同!

总之,如果喜欢,一切要趁早!现在就开始学习!

这里可以了解更多关于章亦春https://www.ituring.com.cn/article/504549) 的履历。

兴趣使然

如今我已经作为专业程序员工作了 10 年,很幸运的把爱好变成了工作、事业,赶上互联网大潮,也获得了比较丰厚的经济回报。

这两年随着互联网的深入人心,人工智能的发展,越来越多的人开始认可技术,学习技术,尊重技术。另外编程配套理论、设施的发展,出现了很多令人兴奋的编程工具,让很多非专业人士也成为开发者,并且在各自领域内都做出了很多成果。越来越多的销售、文员、科学家,甚至小朋友都开始学习某种编程语言。

其中最出名的当属 Python 语言,火遍全网,潘石屹也发微推荐学习 Python。

应一些朋友要求,我也整理出一系列编程课程,按部就班的讲解: title

但是普遍得到的反馈是:

找不到感觉!

感觉是个什么东西?!学习怎么跟谈恋爱一样,这么玄学么?

直到最近跟老伙计喝酒聊天,说到 “小霸王” 学习机,才大概明白这个找不到的 “感觉” 到底是什么。

title

无论学习热情多么高涨的人,要是学很久才搞出这么个玩意儿,实在很难让人提起兴趣继续学下去。

这不活脱脱我当年第一次接触编程的时候,搞出来的东西好像有点意思,但是这玩意儿有什么鬼用,真是让人摸不到头脑!

我们需要将学习进展尽快漂亮的展示出来,可以拿给别人讲:

A: 看,我弄的,漂亮吧! B: 哎呀,真不错啊,好看好看! A: 你等着,我明天有新功能,更厉害! ( A 巨鲸会神搞学习!)

title

兴趣来自于成就感,让每一点努力,都让作品更完善、更漂亮!有了这种成就感,就有了兴趣!

兴趣是最好的老师!

发现了这一点,我将课程做出了一些调整:优先介绍 GUI。

title

与上面 “黑框程序” 类似的功能,不过使用了现代的视窗!

简直不要太让人兴奋!这不就是一个标准的 Windows 程序了嘛!太棒了!

螺旋上升

今天开始,我会向大家介绍一个非常好用的 Python GUI 库: PySimpleGUI。

上面例子里的对话窗口就是用这个库编写的,总共只需要几行代码,你也可以!

import PySimpleGUI as sg

layout = [ 
            [sg.Text("Name:"), sg.Input(key = "__NAME__")], 
            [sg.Button("OK")]
         ]

window = sg.Window("test", layout)

name_input = window.Element("__NAME__")


evnet, values = window.read()

sg.Popup("你好," + values["__NAME__"])

你甚至不需要阅读 PySimpleGUI 的文档,就可以轻松的了解代码的逻辑,Python 绘制界面,也可以如此轻松。

我的目标不仅仅是 PySimpleGUI 库的教程(虽然某种程度上是主要工作),更重要的是用这种漂亮的视窗程序,作为学习的手段。最终的目标依然是掌握 Python 语言,获得利用计算机解决问题的能力!

不同于常规的教程,强调循序渐进,先基础知识再拔高,需要经过漫长的学习还不一定能做出漂亮的作品。

我的做法是:

  • 螺旋上升
  • 兴趣驱动

title

每一次我们都会围绕着一个产品目标,不断的完善它。学习新知识的目的,是为了实现产品的功能,保证每一个新知识点,都能在作品中发挥出显而易见的作用!

好作品,好兴趣!

随着作品越来越漂亮,你对 GUI、Python 基础的理解也会越来越深刻,毕竟烂笔头不如烂键盘,用过的东西才会印在脑子里!

本文链接:http://www.thinkinpython.com/post/PySimpleGUI_1.html

-- EOF --