鱼C论坛

 找回密码
 立即注册
查看: 1202|回复: 3

[已解决]tkinter

[复制链接]
发表于 2020-7-24 09:25:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问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()

这两段代码执行的结果好像是一样的
谢谢
最佳答案
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 可以


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 可以


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-24 09:28:40 | 显示全部楼层
两者相同的地方是都可以显示文本。
不同的地方:text的文本不可以修改,textvariable是通过一个变量设置的文本,可以通过修该改变了的值,来修改显示的文本
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-24 09:59:35 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 20:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表