• 《Python编程 第四版》 -第9章 tkinter之旅:第二部分(上)


    本章重点内容说明:

    1、菜单

    2、Listbox和Scrollbar

    3、Text

    4、Canvas

    5、网格

    6、时间工具、线程和动画

    接下来针对以上内容展开详细说明:

    1、菜单

    所谓菜单,就是通常出现在窗口顶端,带有下拉式列表的部分,不同选择下面会有不同层级的选择

    首先先看一个顶层窗口菜单的简单代码:

     运行该代码,显示结果如下:

     通过上面代码和运行的结果,可以看到,顶层窗口菜单的创建基本逻辑

    1)创建顶层Menu作为窗口组件的子组件,并将窗口的Menu属性设置为新的Menu

    2)对每个下拉式对象,创建一个新的Menu作为顶层Menu的子组件,并在add_cascade方法中将新的Menu设置为顶层Menu的下拉显示对象

    3)为步骤2中创建的每个下拉Menu添加菜单选项,使用add_command方法的command选项来记录选择回调处理器

    4)通过创建新的Menu作为子菜单,以及使用add_cascade方法链接相应父菜单和子菜单的方法,添加下拉式子菜单

     对于代码中的几个函数或者处理的地方,说明如下:

    分割线:

    用add_separator方法在edit菜单中生成分割线

    tearoff:是默认出现在菜单顶部的虚线,可以设置成显示或者不显示:

     上面的方式是顶层窗口菜单方式,同样的窗口显示效果,可以通过基于Frame进行显示的菜单

    他们两者最大不同就是Frame使用了基于框架的方法

    基于Frame和Menubutton的菜单,源码如下:

     可以对比两者看下不同之处

    同样的显示效果,基于框架的菜单,最大的有点是它可以作为大型界面的内嵌部件,

    简单的来说就是可以作为一个模组,进行重复的利用,

    就是上面的为例,如果创建过一次,可以重复利用,如下:

     运行结果如下:

     你会发现,一个窗口里面嵌入了两个菜单选项,这里嵌入的菜单选项就是之前我们创建的基于框架的菜单

    使用Menubutton

    实际上,基于Menubutton的菜单比起示例中显示的那样,应用还要广泛,他们可以出现在任何按钮出现的地方,而非局限于菜单栏的Frame

    看一个源码,如下:

     代码运行结果如下:

     点击food按钮会出现下拉菜单

    2、Listbox和Scrollbar

    Listbox组件允许你现实可选项目的列表,以方便选择

    Scrollbar组件是为了便于浏览和导航其他组件的内容

    首先看一个源码:

     运行代码后的结果,如下:

     简单的来说,左侧就是listbox组件,右侧就是Scrollbar组件,两者经常连在一起时间

    这样的使用方式,也是我们经常看到的

    对于Listbox组件部分的说明

    代码中设定的选择方式是单选,可以进行调整,有多个选择项:

    可以通过参数selectmode来调整,有四个选项:SINGLE、BROWSE、MULTIP和EXTENDD,前两个是单选,后两个是多选

     对于Scrollbar的说明:

    滚动条是和左侧的组件绑定在一起的,也就是两者一起滑动,绑定的相关代码:

     从最后的结果看,滚动条是在右侧的垂直方向滚动,如果是想设定水平滚动条

    其对应的参数是【xscrollcommand】,正好与此处的【yscrollcommand】对应

    3、Text

    首先看一个简单的Text组件的使用展示,代码如下:

     

     代码运行结果如下:

    (未完待续)

  • 相关阅读:
    一本通 1297:公共子序列
    【未完】一本通 1277:【例9.21】方格取数
    一本通 1295:装箱问题
    一本通 1268:【例9.12】完全背包问题
    【BZOJ4416】阶乘字符串(SHOI2013)-状压DP
    【BZOJ2658】小蓝的好友(ZJOI2012)-扫描线+Treap
    【BZOJ2159】Crash的文明世界-第二类斯特林数+树形DP
    【HDU4336】Card Collector-Min-Max容斥
    【BZOJ3997】组合数学(TJOI2015)-Dilworth定理+DP
    【LOJ2537】Minimax(PKUWC2018)-树形DP+线段树合并
  • 原文地址:https://www.cnblogs.com/zhangjiyou/p/14219187.html
Copyright © 2020-2023  润新知