Python tkinter中stringvar.get()和Entry.get之间的区别

Python tkinter中stringvar.get()和Entry.get之间的区别,python,tkinter,Python,Tkinter,在本规范中,以下各项的使用是否有任何区别: sv.get() 或使用: sv = StringVar() ent = Entry(textvariable = sv) 我知道,这两者之间的差别不大: 一个区别是返回的值的类型,例如,如果使用StringVar()它的内部将是str,但是如果使用IntVar()它将只接受整数,如果不接受,它将在稍后尝试IntVar().get()时返回错误。当您使用ent.get()时,您将失去类型转换的优势,因为默认情况下它将始终是str,除非您稍后键入c

在本规范中,以下各项的使用是否有任何区别: sv.get()

或使用:

sv = StringVar()

ent = Entry(textvariable = sv)

我知道,这两者之间的差别不大:

  • 一个区别是返回的值的类型,例如,如果使用
    StringVar()
    它的内部将是
    str
    ,但是如果使用
    IntVar()
    它将只接受整数,如果不接受,它将在稍后尝试
    IntVar().get()时返回错误。当您使用
    ent.get()
    时,您将失去类型转换的优势,因为默认情况下它将始终是
    str
    ,除非您稍后键入caste

  • 接下来,如果您说
    ent=Entry(textvariable=sv).pack()
    ,它将返回
    None
    ,因此您不能在其他地方使用
    ent.get()
    ,而可以使用
    sv.get()
    。但这是推荐的吗?不可以。因为您不能使用其他几种
    输入
    方法,如
    insert()
    delete()
    等。相反,您必须使用
    sv.set('Hello World')
    sv.set(“”)
    分别插入和删除

  • 我认为没有必要将
    StringVar()
    Entry
    小部件一起使用,除非它真的很重要(默认情况下,它的
    str
    ),它只需要与
    Combobox
    和其他类似的组小部件一起使用

  • 但最重要的是,请记住(
    ent.get()
    sv.get()
    都将返回相同的输出,只有当您希望基于输入的输入设置限制时,才可以使用
    IntVar()
    ,但其验证性仍然不强

  • 一个优点是,您可以通过使用tkinter变量(如
    BooleanVar
    DoubleVar
    (小数),
    IntVar
    StringVar
    )来跟踪对它们所做的更改

总结如下:

  • 它的使用取决于代码的用途。对于您所包含的简单示例,不必使用
    StringVar

  • 我通常不会在我的
    Entry
    小部件上使用
    StringVar
    或任何tkinter变量,除非我想用它执行一些特定的操作,比如
    trace()
    或其他什么

希望它能消除你的疑虑。如果我错了,一定要在某些地方纠正我


干杯

我知道,这两者之间的差别不大:

  • 一个区别是返回的值的类型,例如,如果您使用
    StringVar()
    它的内部将是
    str
    ,但是如果您使用
    IntVar()
    它将只接受整数,如果不接受,它将在稍后尝试
    IntVar().get()
    它们时返回错误。当您使用
    ent.get()时
    ,你就失去了这种类型转换的优势,因为默认情况下它总是
    str
    ,除非你以后输入caste

  • 接下来,如果您说
    ent=Entry(textvariable=sv).pack()
    ,它将返回
    None
    ,因此您不能在其他地方使用
    ent.get()
    ,但是您可以使用
    sv.get()
    。但是建议这样做吗?不,因为您不能使用其他几种
    Entry
    方法,例如
    insert()
    delete()
    等等。相反,您必须使用
    sv.set('Hello World')
    sv.set('')
    分别插入和删除

  • 我认为没有必要将
    StringVar()
    Entry
    小部件一起使用,除非它真的很重要(默认情况下,它的
    str
    ),它只需要与
    Combobox
    和其他类似的组小部件一起使用

  • 但最重要的是,请记住(
    ent.get()
    sv.get()
    都将返回相同的输出,只有当您希望基于输入的输入设置限制时,才可以使用
    IntVar()
    ,但其验证性仍然不强

  • 一个优点是,您可以通过使用tkinter变量(如
    BooleanVar
    DoubleVar
    (小数),
    IntVar
    StringVar
    )来跟踪对它们所做的更改

总结如下:

  • 它的使用取决于代码的用途。对于您所包含的简单示例,不必使用
    StringVar

  • 我通常不会在我的
    Entry
    小部件上使用
    StringVar
    或任何tkinter变量,除非我想用它执行一些特定的操作,比如
    trace()
    或其他什么

希望它能消除你的疑虑。如果我错了,一定要在某些地方纠正我


Cheers

任何一种方法都会返回条目小部件中的值。使用
StringVar
变量
选项时唯一的显著区别是,您还有一个需要管理的对象


StringVar
和其他tkinter变量类具有附加功能,例如能够在值更改时调用函数。如果不使用该功能,我建议不要将其中一个变量与
条目
小部件关联。如果不使用这些功能,则会增加开销和sma这两种方法都返回条目小部件中的值。使用
StringVar
variable
选项的唯一显著区别是,您还有一个需要管理的对象

StringVar
和其他tkinter变量类具有附加功能,例如能够在值更改时调用函数。如果不使用该功能,建议不要将其中一个变量与
ent.get()