zoukankan      html  css  js  c++  java
  • 《Python编程 第四版》 -第7章 图形化用户界面

    本章重点内容说明:

    1、循序渐进的GUI学习曲线

    2、tkinter编码的替代之选

    3、添加按钮和回调函数

    4、添加用户定义的回调函数

    5、添加多个组件

    6、用类实现组件的自定义设置

    接下来进行详细的说明

    1、循序渐进的GUI学习曲线

    先看一个简单的代码,如下:

     我们通过命令行运行,运行后结果:看到一个小窗口

     点击关闭,就会消失

    这就是一个简单但是完整的Python GUI程序,这些代码是如何运作的呢?

    1)第一行代码:从tkinter模块中加载一个组件类

    2)第二行代码:创建该组件类的实例为标签类

    3)第三行代码:在父组件中打包新标签

    4)第四行代码:调用主循环,显示窗口,同时开始tkinter的事件循环

    这种代码的编写不是唯一的,还有其他不同方式的选择

    2、tkinter编码的替代之选

    方法1:

     方法2:

     方法3:

     以上是三种不同的方法,可以同时尝试一下

    运行的简单程序,会有一个窗口,这个窗口是可以缩放的,但是缩放后,文字始终保持在顶部,并没法跟着调整:

     我们可以修改代码,让文字能居中,代码调整如下:

     运行后的效果如下:

     除了调整组件的位置,也可以调整窗口的标题

    代码如下:

     运行结果如下:

     说明:上面展示的代码是完整代码,保存为py格式的文件后,在命令行操作框,通过【pyhon+文件名.py】的方式运行即可,就能得到上述展示的运行结果

    3、添加按钮和回调函数

     上面的简单代码示例,是添加的标签,其实添加按钮也基本一直

    看一下下面的代码:

     运行后的结果:

     结果是一个很小的窗口,可以拉大,但是按钮的位置不会随着自动调整,如下:

     同样的逻辑,我们可以参考标签的设定函数来调整,上面的代码精进如下:

     该代码运行后的结果如下:同时拉长扩大

     针对上面代码,详细说明:

    1)command选项设定了按钮按下去时的反应,其中root.quit是回调函数,也就是按钮按下,会调用该函数,该函数表示关闭窗口

    2)pack中有三个参数:

    side:表示按钮对齐的方式,LEFT就是靠左边

    expand:表示按钮随着窗口的拉伸而扩大

    fill:表示填充的方式,X表示水平方向,此处是水平拉伸充满空间

    4、添加用户定义的回调函数

    按钮的对应反应就是回调函数,回调函数可以用户自己定义

    看下面的代码:

     上面这个代码,对比之前的代码,主要是增加了一个定义的函数quit(),用户自定义的,

    此处按钮的回调函数command调用的就是quit,所以运行的结果就是,如果点击按钮,就会运行quit函数

    然后回打印出来其中的文字,点击按钮后的结果,如下:

     lambda回调处理器

    针对上面的函数,我们可以再精简,使用lambda来表示,代码如下:

     5、添加多个组件

    首先我们先看一个代码示例及运行效果,完整代码如下:

     代码运行结果:

     通过这段代码,我们发现与之前的不同之处就是使用了Frame

    Frame组件是其它组件的容器,所以先有了一个容器,才能放下其他多个不不同的容器

    在创建组件的时候,第一个参数对应Frame容器,就表示把该组件放到该容器中

    上面暂时的代码,在Frame容器win中,放了Label、Button两种组件,一共3个组件,从运行结果也能看得出来

    多个组件会涉及到布局的问题,也就是如何放置的问题

    对应布局的参数是side,通过指定该参数就会有不同的布局,我们的示例代码中使用了TOP、LEFT、RIGHT三种布局方位,通过运行结果也能对应看得出来

    6、用类实现组件的自定义设置

    首先看一个用类来实现组件的代码示例:

     代码运行结果:

     上面代码,首先通过继承Button类来创建来子类,子类中使用来部分父类的功能,但是同时它也自己定义了属于自己的一些功能,例如callback函数的调用

    使用类来创建组件,其实主要是因为可以标准化行为和外观,也就是说,如果一旦确认了,就可以通过继承的方式,把很大一部分没变的直接继承使用,而且方便

    这样就可以通过类来复用GUI部件

  • 相关阅读:
    linux中的find命令——查找文件名
    int main(int argc,char* argv[])详解
    VIM进阶学习之几种模式和按键映射
    Fortran编译多个文件(转载)
    Vimdiff---VIM的比较和合并工具
    两篇很牛的vim使用技巧
    程序员软件的罪恶:从不清楚地汇报事故原因
    Free symbol is Harmful
    return语言结构 VS. scala默认返回值
    踩过的“坑”: 命令行指定Java class path
  • 原文地址:https://www.cnblogs.com/zhangjiyou/p/13817838.html
Copyright © 2011-2022 走看看