《Thinking In Tkinter》中文版,Tkinter的前生后世

本文介绍了《Thinking In Tkinter》中文版的翻译背景,强调了书中阐述Tkinter基本概念的重要性。内容涵盖事件驱动的Tkinter程序、简单程序示例及GUI程序的窗口、容器和组件的关系。书中通过Python代码示例解释Tkinter原理,旨在帮助读者掌握Tkinter基础,而不仅仅是工具箱的使用。

今天9月11日,我开始翻译《Thinking In Tkinter》。

关于《Thinking In Tkinter》中文版

我通过网上的书籍自学了Tkinter,发现比我预想的困难很多。最主要的问题是,大部分人只告诉你了,怎么来使用Tkinter的工具箱(Toolkit)里的组件(widgets),但从来不解释那些最基本的概念。他们不来不解释Tkinter工作的原理,所以我就写了这本书,告诉你关于Tkinter的前生后世。

《Thinking In Tkinter》文中包含了一些剪短的示例代码,去解释Tkinter 原理。我没有试图去归类所有的组件(widgets),也没有企图去解释每个组件的属性(attributes),更没有去使用每个方法(methods);我只想告诉你成为Tkinter高手之前,一些最好能了解的一些基本概念。

《Thinking In Tkinter》中文版,没有告诉你怎么去使用Tkinter编码;你可以参考其他的数据,我只试图告诉你一些最基础的,最好要了解的基本Tkinter原理。当然,我推荐你参考这本书《Practical Programming in Tcl and Tk 》;这本书是作为Tkinter的相关工作人员,必须参考的书目之一。你可以参考一下EasyGui,可以加速你的开发进度。也可以试一下Visual TK,这个在线的Tkinter窗口生成工具。

《Thinking In Tkinter》中文版,全文中的示例代码,使用Python来写,译者Robin,在Python 3.7 Win7 版本上运行测试过。你可以从头读到尾,也可以按你的兴趣跳读感兴趣的章节。

  • thinking.py - 事件驱动的程序(the driver program)
  • tt000.py - 简介(introduction)
  • tt010.py - 最简单/简陋的Tkinter程序(simplest possible Tkinter program: 3 statements)
  • tt020.py - 创建一个界面程序,包含布局、容器、组件(creating a GUI object; packing; containers vs. widgets)
  • tt030.py - 创建一个包含组件的容器(creating a widget and putting it in a frame)
  • tt035.py - 面向对象的程序(using a class structure in the program)
  • tt040.py - 定义组件的方法(some other ways to define a widget)
  • tt050.py - 布局(packing)
  • tt060.py - 事件绑定(event binding)
  • tt070.py - 绑定组件的键盘事件("focus" and binding a widget to keyboard events)
  • tt074.py - 动作绑定(command binding)
  • tt075.py - 事件驱动、动作绑定混合使用(using event binding and command binding together)
  • tt076.py - 交互信息(sharing information among event handlers)
  • tt077.py - 通过事件来传达参数(甲部)(passing arguments to event handlers (part 1) - the problem)
  • tt078.py - 通过事件来传达参数(乙部)passing arguments to event handlers (part 2) - solving it with lambda
  • tt079.py - 通过事件来传达参数(丙部)passing arguments to event handlers (part 3) - solving it with currying
  • tt080.py - 组件属性及布局设定(widget options and pack settings)
  • tt090.py - 嵌套容器(nesting frames)
  • tt095.py - 窗口管理的方法和控制窗口的大小(Window Manager methods & controlling the size of windows with the geometry option)
  • tt100.py - 布局的属性(pack options: side, expand, fill, anchor)

第一章:事件驱动的Tkinter程序

基于Gui的程序一般要完成如下四个任务:

  1. UI程序长什么样?【比如,统计数据的程序,应该有3个按键(打开、分析、保存)】
  2. UI程序干什么事?【要先打开Excel文件;开始分析数据;保存分析结果;】
  3. UI程序的画面和要干的事情,关联起来;【3个按键,和功能关联起来】
  4. 完工后,等待用户来操作;【启动后,等待用户来操作】

GUI程序的行业准则

通过GUI来驱动的程序,有一些经典准则跟以上四个任务关联。

  1. 我们会详述,GUI程序会以什么样的形式来展示,比如描述一个功能单元,以及他们之间的业务关联(比如这个功能放上边或下边,左边或者右边)。组件(Widget)这个词基本上用来代替GUI功能单元。组件一般会保护窗口、按钮、菜单、菜单项、图标、下拉列表、滚动条等等。
  2. 具体工作的功能单元(函数),一般被GUI程序叫作回调句柄或者事件句柄。事件(Events)就是按了鼠标左中右键或者键盘按了某个键。这些功能单元被叫作操作杆,因为他们响应这些事件,操纵具体功能。
  3. 把事件的操作杆(Event Handlers)和组件(Widget)关联的动作,就绑定(binding)。绑定的过程一般主要做三件事(a:什么类型的事件,可能输鼠标左键,也可能是回车键;b:那个组件; c:完成什么样的工作;)。例如Close的按钮【那个组件】,左键按了之后呢【那个事件】,会关闭整个程序【退出窗口&关闭程序】。
  4. 做成事件发生并相应的过程,就是事件循环;

关于事件循环(Event Loop)

事件循环,就像一个看门狗。静悄悄的凝视着这个世界,啥也不干。大多数事情看门狗不感兴趣,只是看一看,什么也不干。但是当他感兴趣的事情发生了,刚好这个事情有有跟这个功能单元绑定了,立马开始响应。

程序的表现

接下来的程序,简单演示了一下了一些基本概念和一些基本的实现。他们可不使用Tkinter,也没有啥其他的GUI程序。他们在控制台上显示了一个菜单供你选择,只需要一些简单的键盘响应。

Code

第二章:最简单的只有3行的Tkinter程序

在第一章中,我们讲了界面驱动的程序,主要完成四项任务。这个程序啥也不干,只有一个事件循环。

  1. 引入Tkinter库,让Tkinter可用;
  2. 创建一个窗口;
  3. 开始进入事件循环;

这个程序会有啥表现呢?

运行之后,就一个窗口;右上角有个最小化、最大化、关闭关键。试一下之后,都会工作。

点一下右上角的X的按键,就好发出一下销毁事件,立马销毁并关闭事件循环;之后退出mainloop(),其他啥也不干,完了。

第三章:GUI程序的窗口、容器、组件辩证关系

这一章,主要解决GUI程序基本任务,长什么样的问题。在这个小程序中,我们主要演示三个基本概念:

  1. 创建一个GUI对象,跟他的主人建立关联;
  2. 组合框架、组件;
  3. 框架容器和组件区别;

从现在开始,我们来讨论容器和组件区别。通常来说,组件Widget就是看的见的功能单元,会干一些事完成一定的任务;而容器更新一个篮子,用来放置组件的。Tkinter提供一些容器,比如画板容器Canvas就是用来画一些东西的容器。更流行的叫他们框架。框架呢,在Tkinter中,有一个类叫Frame,一般他们是这么用的。

myContainer1 = Frame(myParent)

Frame类,要指定一下父类(一般是一个root);Frame类的名字就是myContainer1。简单而言,Frame类的对象,就是用来发那些可视的组件的(这个小程序,没有可视的组件,以后会用到)。

程序中的父子关系,是一种逻辑关系。这种关系呢,主要方便程序销毁的时候,父组件销毁前,先把子组件销毁一下。

代码的第二句,就是把框架组装一下。很简单,Packing就是把建立一个让逻辑关系,显示出来。你不组装,那些组件还是看不到。

myContainer1.pack()

Pack如何工作呢?就是调用Tkinter的位置管理器;位置管理器,就会告诉Tkinter,怎么来组合容器和可视化的控件。Tkinter支持三种位置管理器:pack,grid,place。Pack和Grid比较常用,因为他们很容易使用。本身中的例子,都使用的是Pack框架。

 

翻译正式开搞!

Abstract Describes the Tkinter widget set for constructing graphical user interfaces (GUIs) in the Python programming language. This publication is available in Web form1 and also as a PDF document2. Please forward any comments to tcc-doc@nmt.edu. Table of Contents 1. What is Tkinter?.......................................................................................................................3 2. A minimal application..............................................................................................................3 3. Definitions..............................................................................................................................4 4. Layout management.................................................................................................................5 4.1. The .grid() method....................................................................................................5 4.2. Other grid management methods...................................................................................6 4.3. Configuring column and row sizes.................................................................................7 4.4. Making the root window resizeable................................................................................8 5. Standard attributes...................................................................................................................8 5.1. Dimensions...................................................................................................................9 5.2. The coordinate system...................................................................................................9 5.3. Colors...........................................................................................................................9 5.4. Type fonts...................................................................................................................10 5.5. Anchors......................................................................................................................11 5.6. Relief styles.................................................................................................................12 5.7. Bitmaps.......................................................................................................................12 5.8. Cursors.......................................................................................................................12 5.9. Images........................................................................................................................14 5.10. Geometry strings........................................................................................................14 5.11. Window names...........................................................................................................15 5.12. Cap and join styles.....................................................................................................15 5.13. Dash patterns.............................................................................................................16 5.14. Matching stipple patterns............................................................................................16 6. The Button widget................................................................................................................17 7. The Canvas widget................................................................................................................19 7.1. Canvas coordinates......................................................................................................20 7.2. The Canvas display list................................................................................................20 7.3. Canvas object IDs........................................................................................................21 7.4. Canvas tags................................................................................................................21 1http://www.nmt.edu/tcc/help/pubs/tkinter/ 2http://www.nmt.edu/tcc/help/pubs/tkinter/tkinter.pdf 1 Tkinter reference New Mexico Tech Computer Center 7.5. CanvastagOrId arguments......................................................................................21 7.6. Methods on Canvas widgets........................................................................................21 7.7. Canvas arc objects.......................................................................................................26 7.8. Canvas bitmap objects.................................................................................................28 7.9. Canvas image objects..................................................................................................29 7.10. Canvas line objects.....................................................................................................29 7.11. Canvas oval objects....................................................................................................31 7.12. Canvas polygon objects..............................................................................................32 7.13. Canvas rectangle objects.............................................................................................34 7.14. Canvas text objects.....................................................................................................35 7.15. Canvas window objects..............................................................................................36 8. The Checkbutton widget......................................................................................................37 9. The Entry widget..................................................................................................................40 9.1. Scrolling an Entry widget............................................................................................43 10. The Frame widget................................................................................................................43 11. The Label widget................................................................................................................44 12. The LabelFrame widget......................................................................................................46 13. The Listbox widget............................................................................................................48 13.1. Scrolling a Listbox widget........................................................................................52 14. The Menu widget..................................................................................................................52 14.1. Menu item creation (coption) options.........................................................................55 14.2. Top-level menus.........................................................................................................56 15. The Menubutton widget......................................................................................................57 16. The Message widget............................................................................................................59 17. The OptionMenu widget.......................................................................................................60 18. The PanedWindow widget....................................................................................................61 18.1. PanedWindow child configuration options...................................................................63 19. The Radiobutton widget....................................................................................................64 20. The Scale widget................................................................................................................67 21. The Scrollbar widget........................................................................................................70 21.1. The Scrollbarcommand callback............................................................................72 21.2. Connecting a Scrollbar to another widget................................................................73 22. The Spinbox widget............................................................................................................73 23. The Text widget..................................................................................................................78 23.1. Text widget indices...................................................................................................80 23.2. Text widget marks....................................................................................................81 23.3. Text widget images...................................................................................................82 23.4. Text widget windows...............................................................................................82 23.5. Text widget tags.......................................................................................................82 23.6. Setting tabs in a Text widget......................................................................................83 23.7. The Text widget undo/redo stack..............................................................................83 23.8. Methods on Text widgets..........................................................................................84 24. Toplevel: Top-level window methods..................................................................................91 25. Universal widget methods.....................................................................................................93 26. Standardizing appearance...................................................................................................101 26.1. How to name a widget class......................................................................................102 26.2. How to name a widget instance.................................................................................102 26.3. Resource specification lines.......................................................................................102 26.4. Rules for resource matching......................................................................................103 27. Connecting your application logic to the widgets...................................................................104 28. Control variables: the values behind the widgets...................................................................104 29. Focus: routing keyboard input.............................................................................................106 New Mexico Tech Computer Center Tkinter reference 2 30. Events................................................................................................................................107 30.1. Levels of binding......................................................................................................108 30.2. Event sequences.......................................................................................................109 30.3. Event types..............................................................................................................109 30.4. Event modifiers........................................................................................................110 30.5. Key names...............................................................................................................111 30.6. Writing your handler: The Event class......................................................................113 30.7. The extra arguments trick..........................................................................................115 30.8. Virtual events...........................................................................................................116 31. Pop-up dialogs....................................................................................................................116 31.1. The tkMessageBox dialogs module..........................................................................116 31.2. The tkFileDialog module.....................................................................................118 31.3. The tkColorChooser module.................................................................................119
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值