栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

修改变量值时该怎么办?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

修改变量值时该怎么办?

一种方法是利用可变类(的

BooleanVar
DoubleVar
IntVar
StringVar
Variable
),以及它们的
trace_add
方法。当实例拥有的值被修改时,它允许调用一个方法。

try:  # In order to be able to import tkinter for    import tkinter as tk    # either in python 2 or in python 3except importError:    import Tkinter as tkdef do_stuff(*_):   # trace_add implicitly passes 3 internal arguments    demo['text'] = var.get() # to obtain the value var holdsif __name__ == '__main__':    root = tk.Tk()    var = tk.StringVar(value="Value")    #var = tk.BooleanVar(value=True)    #var = tk.DoubleVar(value=2.78)    #var = tk.IntVar(value=0)    #var = tk.Variable(value=["Value", True, 2.78, 0])    demo = tk.Label(root, text=var.get())    demo.pack()    var.trace_add('write', do_stuff)    # call do_stuff when var is set    var.set("New Value")    # to replace the value var holds    #var.set(False)    #var.set(3.14)    #var.set(42)    #var.set(["New Value", False, 3.14, 42])    tk.mainloop()

还需要注意的是,尽管并非总是实用,但某些小部件具有变量选项(变量,文本变量,列表变量),这些选项允许它们持有的值与变量类对象的值同步。下面的示例利用了这一点:

try:  # In order to be able to import tkinter for    import tkinter as tk    # either in python 2 or in python 3except importError:    import Tkinter as tkif __name__ == '__main__':    root = tk.Tk()    var = tk.StringVar(value="Value")    demo = tk.Label(root, textvariable=var)    demo.pack()    var.set("New Value")    # label is in sync right-away    tk.mainloop()

另一种方法是在使用class时

__setattr__
利用对象的属性分配魔术方法。

例如,

demo
标签将在每次
self.string
修改属性时更新:

try:  # In order to be able to import tkinter for    import tkinter as tk    # either in python 2 or in python 3except importError:    import Tkinter as tkclass MyLabel(tk.Label):    def __init__(self, master, var="", *args, **kwargs):        tk.Label.__init__(self, master, *args, **kwargs)        self.var = var    def __setattr__(self, name, value):        self.__dict__[name] = value        if name == 'var': self.do_stuff()    def do_stuff(self):        self['text'] = self.varif __name__ == '__main__':    root = tk.Tk()    demo = MyLabel(root, "Value")    demo.pack()    demo.var = "New Value"    tk.mainloop()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669780.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号