码迷,mamicode.com
首页 > 其他好文 > 详细

Tkinter 从0到1——Variable类的使用方法详解

时间:2020-05-06 18:15:55      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:eva   com   segment   cos   一个   关注   提示框   lambda   常用   

为什么需要Variable

  • Variables是Tkinter编程中非常重要的组成部分。它存在的目的是为了解决Python中存在的一个“问题”,即Python本身并不支持变量回溯。
  • 而变量的回溯在GUI编程中是极为重要的部分。考虑如下的场景:在你的GUI界面中有一个Entry输入框和一个按钮,每当用户按下按钮时都会将输入框中的值通过messagebox.showinfo消息框显示出来
    from tkinter import Tk, Variable, Entry, Button
    from tkinter.messagebox import showinfo
    tk = Tk()
    a = Variable(tk, value=‘123‘)
    e = Entry(tk, textvariable=a)
    b = Button(tk, command=lambda *args: showinfo(message=a.get()),
              text="GET")
    e.pack()
    b.pack()
    tk.mainloop()
    
    效果如下:
    技术图片
    通过Variable作为前段和后端的桥梁,我们便可以很方便的获取用户输入的值。

Variable常用的使用方法

  • 根据所包装的变量的不同,共有如下的四种Variable: BooleanVar, DoubleVar, IntVar, StringVar, 除了类型不同, 其使用方法完全一致

实例化一个Variable对象

  • 例: 实例化一个StringVar
    var = StringVar()
    
    可以通过value属性为其赋初值

对一个Variable对象进行读取or写入操作

  • 通过Variable对象的setget方法进行
  • set
    from tkinter import *
    tk = Tk()
    v = Variable()
    v.set("123")
    e = Entry(tk, textvariable=v)
    e.pack()
    tk.mainloop()
    
  • get
    (可以参考例1)

Variable对象执行读or写or销毁操作本身也可以触发事件

  • 调用Variabletrace方法,在Variable的值被读取or写入or销毁的时候触发事件,进而调用回调函数。
  • trace方法接收两个参数: mode指定了事件的类型, 用"r"表示读取操作, 用"w"表示写入操作, 用"u"表示销毁操作. callback指定了当mode中指定的事件触发时调用的回调函数
  • 例: 当对一个Entry执行写入操作时, 触发回调函数:
    from tkinter import *
    from tkinter.messagebox import *
    
    def callback(*args):
        showinfo(message="I‘ve been changed")
    tk = Tk()
    v = Variable()
    v.trace("w", callback)
    e = Entry(tk, textvariable=v)
    e.pack()
    tk.mainloop()
    
    执行后,每当改变Entry中的值,都会有提示框出现。

获取更多对Variable的介绍,建议参考官方文档:https://effbot.org/tkinterbook/variable.htm
欢迎关注我的微信公众号: Code Segment, 获取更多关于编程等内容的文章。

Tkinter 从0到1——Variable类的使用方法详解

标签:eva   com   segment   cos   一个   关注   提示框   lambda   常用   

原文地址:https://www.cnblogs.com/CodeSegment/p/12837790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!