lawrence1357 发表于 2020-7-24 09:25:18

tkinter

请问textvariable和text有什么区别,
例如:
master = Tk()
def test():
    if e1.get() == "小甲鱼":
      print("正确!")
      return True
    else:
      print("错误!")
      e1.delete(0, END)
      return False
v = StringVar()
e1 = Entry(master, textvariable=v, validate="focusout", validatecommand=test)
e2 = Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
mainloop()

master = Tk()
def test():
    if e1.get() == "小甲鱼":
      print("正确!")
      return True
    else:
      print("错误!")
      e1.delete(0, END)
      return False
e1 = Entry(master, validate="focusout", validatecommand=test)
e2 = Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
mainloop()

这两段代码执行的结果好像是一样的
谢谢

Twilight6 发表于 2020-7-24 09:28:07

本帖最后由 Twilight6 于 2020-7-24 09:35 编辑



textvariable 是个可以改变文本信息的

而 text 是不可变的

试着运行这两个代码你就知道效果了:

当参数为 textvariable 时:

from tkinter import *

master = Tk()
def set_text():
    v.set('I Love Python!!!')


v = StringVar()
v.set('I Love Fishc!!!')
l = Label(master,textvariable=v)
l.pack()
Button(master,text='改变文本按钮',command = set_text).pack()

mainloop()

当参数设置为 text 时候:
master = Tk()
def set_text():
    v.set('I Love Python!!!')


v = StringVar()
v.set('I Love Fishc!!!')
l = Label(master,text=v.get())
l.pack()
Button(master,text='改变文本按钮',command = set_text).pack()

mainloop()

text 无法通过改变 v 的值,来改变 Label 显示文本内容

而 textvariable 可以

sunrise085 发表于 2020-7-24 09:28:40

两者相同的地方是都可以显示文本。
不同的地方:text的文本不可以修改,textvariable是通过一个变量设置的文本,可以通过修该改变了的值,来修改显示的文本

lawrence1357 发表于 2020-7-24 09:59:35

谢谢
页: [1]
查看完整版本: tkinter