zzx217的个人博客分享 http://blog.sciencenet.cn/u/zzx217

博文

GUI的演化和python编程

已有 3074 次阅读 2021-9-4 20:18 |系统分类:科研笔记

GUI的演化和python编程

 

写完了有关长寿的两篇博文,本该去完成哥德尔那个命题六的。对计算机图形界面的好奇,让我把注意力暂时离开那个高度抽象难读的哥德尔,给转到计算机语言的python中来了。在python之中竟然有个图形界面的tkinter,它是什么?它从哪儿来?这引发我大大的兴趣。我要弄明白这个图形界面的GUI,究竟是个什么东西?能弄明白的就去弄明白,弄不明白的,只要你想弄明白,大概总可能弄明白。

这就开始了本篇博文。

GUI的图片表述

 图形用户界面.jpg

一、从自然语言,电视到图形用户界面GUI

计算机语言是一种让你感到奇异的语言种类,既不是母语那个类型,也不是外语那个类型。上帝给这个世界创造出各种各样的语言,于是全世界的人就捏不到一块去。那个通天的巴比塔,也就永远也建立不起来。但是,上帝却没有创造出计算机语言,计算机语言全都是人造的。我所接触的python,那就是一个人造的语言。

上帝造的语言似乎都是用来进行人际交流的,所以它有口语,有言谈。计算机语言似乎没有口语,绝不用来交谈,似乎最主要是用来保证人对机器的控制。所以,它只有字符指令。所谓人机对话那也只是近几年的事,而且,这个对话也一定和人际之间的对话区别甚大。至少,人与人之间的对话是有感情色彩的,机器哪里会掺和上什么感情色彩?

我们常惊异于自己的自然语言,魔幻无穷,神奇深邃。就是那么几千个词汇,却道尽了这人世间的千奇百怪,炎凉春秋,还引发人对于历史未来,还有存在的无尽思考。而且,这个用来描述所有自然世界和内心世界的各种自然语言,似乎还具有永恒的品质,它取之不尽且用之不竭。

但科学产生之后,在自然语言基础之上,出现了描述科学的人工语言,一套套抽象古怪的符号系统。而到了20世纪后半叶,又一类人工语言,计算机语言降临人间。这类语言,应该属于人工语言中的一个特异品类。仅就计算机语言中的python而言,其语言的特异,特别表现在它借助网络而获得的链接扩展,由此而不断展现出的表达能力上。

人类对于信息的传播,首先当然是使用自然语言。但机器出现之后,声音的传播有了留声机,然后有了电话。文字的传播有了电报,然后有了计算机。但图像视频的传播,却比计算机出现得早,计算机产生之前的20世纪20年代,英国人贝尔德发明了电视,图像视频的电视传播时代,也称为屏幕时代应该由此而开始。

贝尔德的电视(来自百度)

 电视机的发明.jpg

有趣的是,电视时代还不是真正的屏幕时代。计算机早期的字符界面,也不是真正的屏幕时代。

计算机的字符界面图(来自知乎)

 早期字符界面.jpg

当你学习python语言,学到要开始自己编程的那个阶段时,你立刻就发现,python语言的编程,在基本概念的铺垫之后,就是三个大写字母GUI所构成的一个知识系统,称作图形用户界面。这个界面系统的成型,才真正象征着人类的屏幕时代。

 

二、GUI(Graphical User Interface)的今生今世

我们这一辈历经折腾,但最为幸运的一点,是差不多见证了人类电子时代的全过程。至少是这几十年的改革开放,让我们见证了这个神奇的GUI,它在今生今世的点点滴滴。

人类的发明是商业驱动还是兴趣驱动,或者是战争驱动?大概都有可能。有些发明虽然很小很小,看似是一个完全可以忽略不计的雕虫小技,却会带来科技领域的连带效应。回看GUI的成型过程,这一点特别明显。一个了不起的时代,也许就是一个小小的发明促成的。

人类进入到今天的屏幕时代,可以追溯很多很多东西,一直追索到远古时代。但美国人道格拉斯.恩格尔巴特Doug.Engelbart(1925-2013)在1963年发明的鼠标,一般都看作是GUI的源头。正是这个鼠标所带来的屏幕游标,对于计算机的命令行控制的观念带来了巨大的冲击。图像观念,由此而进入到计算机研究者群体的视野。

恩格尔巴特发明的鼠标(来自百度)

 鼠标.jpg

十年之后的1973年,当时的施乐公司(Xereo)给它们的计算机Alto,配备了集合许多计算机元素的图形界面操作系统,使用的就是3键鼠标。一些基本的图形界面概念,由此而在计算机中出现了。首先当然是鼠标,还有矩形窗口,滚动条,桌面,所见即所得等等新概念。窗口概念的出现似乎最为重要,自然语言的窗口概念,用在计算机之中,似乎完全超越了这个词本身的含义。人类似乎因为这个概念的出现,而展现了一个新的世界,一个与实在世界相通相连,却又可以说完全不同的虚拟世界。我们是从屏幕的窗口,进入到各式各样虚拟世界的。一个真假更难辨别,信息超级爆炸,鬼蜮魍魉满布的虚拟世界。

这个窗口一打开,世界真的变了一个样。几乎所有的智慧人类,除了这个环绕自身的实在世界之外,我们几乎有无限的窗口,来给我们展示无限的虚拟世界。这个宏大话题,暂且就到此为止吧,我们还是聚焦到那个GUI,看看这施乐的图形界面系统的出现,随之带来些何方神奇。

施乐的用户界面

 乔布斯看到的gui.jpg

又过了几年,1976年,正是我们文革的尾期,我们依然在无休止地进行斗斗斗的时候,苹果的创始人乔布斯参观了施乐的计算机工厂。宛如触电似的那种激荡,让乔布斯不胜吁叹,用他自己的话,他简直就是亮瞎了眼,乔布斯说:

他们给我看了三样东西,但我被第一件东西亮瞎了,以至于我甚至没有看到另外两个。他们向我展示的东西之一是面向对象编程。他们给我看了,但是我没有get到。他们给看的另一个实际上是一个互联的计算机系统。有超过一百个Alto计算机在使用电子邮件等等,我也没有get到。那个亮瞎我的第一件东西就是图形用户界面(GUI),我认为这是我这辈子见到的最好的东西(转摘自https://www.jianshu.com/p/9133f5a567dc《简书》路漫漫博文)。

 

这个参观肯定震动了乔布斯,又过了几年,1983年,乔布斯的苹果公司推出了appleLisa个人计算机,这应该是全球第一款搭建图形用户界面的个人计算机。

乔布斯看到的第一款图形界面计算机

 gui的起点施乐.jpg

1983年Apple弄出来他们的图形界面个人计算机。

1983年的gui苹果计算机lisa.jpg

于是,GUI的进展加快了脚步,继苹果之后,比尔盖茨的微软紧跟上来。1986年首款用于Unix的窗口系统X.Window.System发布出来。

1986年的window

 1986年的gui,window.jpg

 

1988年微软与IBM合作创建了窗口系统OS/2,1990年微软发行win3.0.。九十年代开始使用win操作系统的人,都会对这个win3.0有感觉。那时候国内开始出现互联网,当时win3.0配备的浏览器,我记得有Netscape Navigator,中文名为网景,但那时的上网,费用高不说,基本上没有什么东西。微软的win3.0,

Win3.0

1990年的win3.0.jpg

一直升到win3.11,图形界面又产生一次飞跃式的进步。

Win3.11版

 win3.11.jpg

这个进步就是1995年出现的window95,窗口以全名展现出来。我们几乎全都通过窗口,来领略那个与实在世界同在的虚拟世界,全球化似乎在这个窗口的引领之下,真的让这个地球成为了一个村落。

Win95

 1995年的win95.jpg

2000年后的win

200年之后的winxp.jpg

图形用户界面GUI由此而成型,从此,计算机屏幕给我们呈现的就是窗口。我们的自然语言,把我们人体的眼睛称作心灵的窗口。这大概至少是两层意思,一层意思,主体通过眼睛来观察外部世界,再传递给主体的心灵来消化这些观察。另一层意思,客体则可以通过我们的眼睛来测度我们的心灵。这个语词用到计算机,则显然有它自身的专业意义。窗口在这里成为一个专业计算机词汇,通俗一点地说,计算机的屏幕表层就是一个窗口,窗口之内则是一个巨大的容器或者虚拟空间,这个空间所容纳的东西都是信息。而为了获得信息和创制信息,我们需要在窗口设置导引的界面。就像我们远程旅行需要地图一样。于是在窗口之中,需要设置标签、按钮、文本框、工具栏、菜单、图标、控件、框架等等。还有更多派生出的计算机词汇,难以列尽。由这些导引,我们才方便去实现程序的开发和应用,我们才能看到,这个虚拟窗口之后的虚拟世界。

这真是回应了那句格言:人类的生活来自于人类的发明。GUI的发明和成型,人类的周边从此就不仅有环绕自身的实在世界,也有在那个小小窗口后面无穷无尽的虚拟世界。

Gui概念关系图

 gui组件关系图.jpg

三、计算机语言与GUI的对接

完全无知python的时候,没有想到python的编程和GUI链接起来运用。等到对于基本概念有了大致的理解,开始做些简单编程的时候,GUI出现了。原来,python语言是把GUI打包进它的语言包中。上世纪90年代成型的GUI,也是上世纪创建的python语言,就这样合成了一体。所谓知识与信息的共享,成型的GUI系统应该是一个例子。自然,现在的python语言,也是知识与信息共享的又一个例子。

这两个东西的对接,也是一件有趣的结合。我们用python组织一段字符,计算机的屏幕就出现一个对应的图形。而在GUI中,伴随窗口而产生的系列图形,都是我们的自然语言中通俗易懂的那些语汇。如以上章节提到的:窗口,标签、按钮、文本框、工具栏、菜单、图标、控件、框架等等。还有图片、视频和动画等等,都有和python的对接。以下仅以我模拟自编的一小段编程作为例子,来说明python字符与GUI图形界面的对接。

自编ch5-7

#ch5-7图形界面
from tkinter import *
def printinfo():
    print('Account:%s\nPassword: %s' % (accountE.get(),pwdE.get()))
    accountE.delete(0,END)
    pwdE.delete(0,END)
 
root = Tk()
root.title('ch5-7')
 
msg = 'welcome to our south china normal university'
fourGIF = PhotoImage(file='four.gif')
logo = Label(root,image=fourGIF,text=msg,compound=BOTTOM)
account = Label(root,text='Account')
account.grid(row=1)
pwdL = Label(root,text='Password')
pwdL.grid(row=2)
 
logo.grid(row=0,column=2,pady=10,padx=10)
accountE = Entry(root)
pwdE = Entry(root,show='*')
accountE.insert(0,'WenQi')
pwdE.insert(0,'pwd')
accountE.grid(row=1,column=1)
pwdE.grid(row=2,column=1,pady=10)
 
loginbtn = Button(root,text='Login',command=printinfo)
loginbtn.grid(row=3,column=0,sticky=W,pady=5)
quitbtn = Button(root,text='Quit',command=root.quit)
quitbtn.grid(row=3,column=1,sticky=W,pady=5)
 
root.mainloop()

 

以上文件执行后的GUI图片

 python图形界面.jpg

这个世界,因为总有那些搅屎棍的折腾而动荡不安,但是,这个世界也因为科技的进步与共享而不断给我们以机会和幸运。唯淡泊而致宁静,旷达以成修远也。

本文的撰写,特别多地借用了《简书》网页博客作者路漫漫的图片和行文思路,在此致以谢意。

来自简书的作者题头截图

 图片来源.jpg


 

 

 




https://blog.sciencenet.cn/blog-3478957-1302870.html

上一篇:证明序列 证明公式和可证——哥德尔读后之十九
下一篇:哥德尔不完全性定理 关系 谓词和代入——哥德尔读后之二十
收藏 IP: 120.230.79.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-7-26 12:27

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部