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

Posted codesegment

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tkinter 从0到1——Variable类的使用方法详解相关的知识,希望对你有一定的参考价值。

为什么需要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类的使用方法详解的主要内容,如果未能解决你的问题,请参考以下文章

Python3 tkinter基础 Radiobutton variable 默认选中的按钮

Python3 tkinter基础 Radiobutton variable 默认选中的按钮

Python3 tkinter基础 Checkbutton variable 多选钮是否被选中

[Tkinter 教程04] Variable 类

Python系列_tkinter.TclError: no display name and no $DISPLAY environment variable

tkinter、python 和 seaborn 的问题:_tkinter.TclError: no display name and no $DISPLAY environment variable