zoukankan      html  css  js  c++  java
  • 组件配置

    组件配置

    控制组件的外观,通常的方法是使用选项(option),而不是方法调用.典型的选项包含text,color,size,command callbacks(文字,颜色,大小,回调命令)等.所有核心组件都从相同的配置接口来实现选项处理操作

    配置接口

    widgetclass(master, option=value, ...) => widget

    创建一个组件类的引用,作为给出的master的一个子组件, 并使用给定的选项. 所有选项都具有缺省值, 因此,在最简单的情况下,你仅需要指定master即可.如果你觉得必要,你甚至可以连master也可以省去;Tkinter会使用最近创佳的root 窗口作为master.注意, name 选项仅可以在组件创建时被指定.

    cget(option) => string

    返回选项的当前值.同时返回的包括选项和名字和返回值.选项名,和选项值都是字符串.取得组件的 name 选项需要用 str(widget) 代替.

    configure(option=value, ...) config(option=value, ...)

    指定一个或多个选项 (作为参数给出).

    注意,一些选项名字和Python的一些保留字相同 ( class from , ...).要使用这些作为关键参数, 可以简单地在选项名后面添加一下划线即可( class_ from_ , ...). 注意,你用这个方法不可以改变 name 选项 ;

    更简单的方法, 组件也实现了一部分字典接口. __setitem__ 定制了 configure方法 , 而 __getitem__ 定制了 cget 方法 . 这样,我们就可以使用下面的语法来指定或查询一个选项:

     
    value = widget[option] 
    widget[option] = value
            

    注意:每一次赋值只能产生一个结果,如果你希望一次改变多个选项, 比较好的方法是用 config 或 configure方法 .

    The following dictionary method also works for widgets:

    keys() => list

    Return a list of all options that can be set for this widget. The name option is not included in this list (it cannot be queried or modified through the dictionary interface anyway, so this doesn't really matter).

    向后兼容

    关键字参数是从Python1.3版之后才出现的,在此之前,选项是以字典形式传递到构建器和configure方法里的 它的使用方法大概象下面这个样子:

     
    self.button = Button(frame, {"text": "QUIT", "fg": "red", "command": frame.quit}) self.button.pack({"side": LEFT})
          

    关键词参数从语法上来说当然是更文雅些,并且不易出错.然而,为了兼容已经存在的代码, Tkinter仍支持这种语法形式.你最好不要在程序里使用这种语法,虽然有时候它很诱人.例如,如果你创建一个定制的组件,它需要指定的一些配置选项要从父类传递进来, 你可以使用下面的方法:

     
    def __init__(self, master, **kw): 
    	Canvas.__init__(self, master, kw) # kw is a dictionary
    	

    这段代码在现在来说是工作正常的,不过也许在以后的Python版本里会出现错误. 一个通常的解决办法是使用 apply 函数:

     
    def __init__(self, master, **kw): 
    	apply(Canvas.__init__, (self, master), kw)
    	

    apply 函数可以接受一个调用函数 (在这里是一个未绑定的方法), 一个元组作为参数(它必须包括 self ,因为我们调用的是一个未绑定方法), 后面可以提供一个可选的调用函数的关键词参数,它用字典来存贮.

  • 相关阅读:
    张季跃 201771010139《面向对象程序设计(java)》第十五周学习总结
    张季跃 201771010139《面向对象程序设计(java)》第十四周学习总结
    张季跃 201771010139《面向对象程序设计(java)》第十三周学习总结
    201771010142-张燕 实验四 软件项目案例分析—项目报告
    201771010142-张燕 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告
    201771010142-张燕 实验二 个人项目—<学生疫情上报系统>
    201771010142-张燕 实验一 软件工程准备—<软件工程的初步了解和学习目标>
    实验十八 总复习
    实验十七 线程同步控制
    实验十六 线程技术
  • 原文地址:https://www.cnblogs.com/shaoguangleo/p/2805798.html
Copyright © 2011-2022 走看看