找到stringvar的长度

时间:2017-04-01 13:05:58

标签: python tkinter variable-length

我正在尝试创建一个函数,如果文本框后面的变量为空,则会将文本添加到文本框中。我试图使用.len()函数执行此操作,但我得到了

AttributeError: 'StringVar' object has no attribute 'length'. 

我的代码如下:

line1var = StringVar()

line1var.set("")

def tobeplaced(value):

    global line1var

    if line1var.length() == 0:

        txtReceipt.insert(END, value)

foo = Button(root, text="foo", command=lambda : tobeplaced("foo")).pack()

怎么办?

1 个答案:

答案 0 :(得分:3)

Tkinter long没有StringVar.len方法。您可以使用.length方法访问关联的字符串,并使用标准的Python内置get函数获取该字符串的长度,例如

len

但它更干净(也更有效率)

if len(line1var.get()) == 0:

因为空字符串是假的。

这是一个小型(Python 3)演示:

if not line1var.get():
顺便说一下,你应该

import tkinter as tk

root = tk.Tk()

label_text = tk.StringVar()
label = tk.Label(textvariable=label_text)
label.pack()

def update():
    text = label_text.get()
    if not text:
        text = 'base'
    else:
        text += '.'
    label_text.set(text)

b = tk.Button(root, text='update', command=update)
b.pack()

root.mainloop()

foo = Button(root, text="foo", command=lambda : tobeplaced("foo")).pack() 方法(以及相关的.pack.grid方法)返回.place,因此上述语句会将None分配给None 。要将窗口小部件分配给foo,您需要在单独的语句中进行分配和打包,例如

foo