首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求字符串的长度

问求字符串的长度
EN

Stack Overflow用户
提问于 2017-04-01 13:05:57
回答 1查看 3.8K关注 0票数 0

如果文本框后面的变量为空,我正在尝试创建一个函数,该函数将向文本框中添加文本。我试图使用.len()函数来完成这个任务,但是我得到了一个

代码语言:javascript
复制
AttributeError: 'StringVar' object has no attribute 'length'. 

我的代码如下:

代码语言:javascript
复制
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()

做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-01 13:43:09

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

代码语言:javascript
复制
if len(line1var.get()) == 0:

但这样做更干净(更有效率)

代码语言:javascript
复制
if not line1var.get():

因为空字符串是假的。

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

代码语言:javascript
复制
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()

顺便说一句,你不应该

代码语言:javascript
复制
foo = Button(root, text="foo", command=lambda : tobeplaced("foo")).pack()

.pack方法(以及相关的.grid和.place方法)返回None,因此上面的语句将None分配给foo。要将小部件分配给foo,您需要在单独的语句中完成分配和打包,例如

代码语言:javascript
复制
foo = Button(root, text="foo", command=lambda : tobeplaced("foo"))
foo.pack()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43157248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档