python3.Tkinter学习之Tk概念

译自Modern Tkinter for Busy Python Developers

与pyQt,wxPython相比tkinter较为简单,我用来制作小型GUI程序,省去了很多较为深入的知识,只保留了常用部分。

Widgets

Widget 类

Widget是对象,表示Button, frame等类的实例。

窗口的分层结构

另一件需要知道的事是创造的widget实例的父级。Tk中,所有的widgets都是窗口分层结构中的一部分,单个root作为分层结构的顶部。这个结构可以有任意深度,你可以在一个root窗口中建一个frame,frame包含另一个frame,frame又包含一个button。甚至一个新的顶级窗口是同样结构中的一部分,它的内容组成整体窗口分层结构中的子树。

在常见例子中,我有单个frame作为root窗口的孩子,这个frame控制着其他所有孩子。root窗口是frame是容器,及父级。

Alt text

创建和使用Widgets

每个分开的widget都是python的一个对象。当创建一个widget时,必须将它的父级作为参数传入widget的生成函数。唯一的例外是root窗口,它作为顶级窗口包含了其他的任何东西。它被自动创建,没有父级。例如:

是否要将widget对象存入一个变量取决于使用者,并且决定于过后时候要引用它。

配置选项

所有的widget都有很多不同的配置选项,这将会控制它们的显示和行为。

可用的选项取决于widget的类。不同widget类之间有很大的一致性,所以一样的选项有着一样的名称。button和label都有一个text选项去调整widget会显示的文本内容,同时scrollbar不需要一个text选项因为它不需要。同样的,button有一个command选项去告知被按下时将要做什么,label用于储存静态文本,就没有command

配置选项在widget第一次被创建时可以设定,通过传递选项名称和选项值作为参数。

事后可以检查选项的值是多少,并且除个别例外以外,可以随时修改它们。

如果不确定一个widget全部的不同选项,可以访问widget来列出它们。可以看见选项的名称和当前的值。

图形化管理

创建完widget以后,会发现它们并没有显示在屏幕上,这是另外的一步操作。

定位通过grid命令完成。我们传入column和row来让widget在grid内对齐。Grid是图形化管理的一个例子。(Tk中有多个,但是grid最常用。)我们将在后面的章节中详细讲grid。

事件处理

Tk中,这里有一个事件循环体在接受着操作系统的事件。比如按钮被按下,键盘点击,鼠标移动,窗口缩放等等。

事件绑定

可以通过bind去捕捉事件,然后执行某一部分代码。

这里有一个比较傻的例子。

前三个事件都很直接。双击的绑定引入了事件修饰符的概念。
这个链接有更详细的信息。

Leave a Reply

Your email address will not be published.