首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >限制tk小部件上的条目

限制tk小部件上的条目
EN

Stack Overflow用户
提问于 2012-07-15 18:28:33
回答 4查看 10.6K关注 0票数 2

我很难找到一种方法来限制条目小工具的条目长度,我想将其限制为20个字符,即当我单击一个序列或其他序列时,我希望能够对其进行编辑,但停留在20个字符的限制内。为了保持代码的轻量级,我应该使用正则表达式、循环还是使用事件检查条目?

下面是我的代码:

代码语言:javascript
运行
复制
import Tkinter
from Tkinter import *
import tkFileDialog

root = Tkinter.Tk()

edit1    =StringVar()
edit2    =StringVar()
s = StringVar()


s = "GATACACGCGCGCGTATATATTACGCGCGCGATACA"



lb01=Label(root,text="sequence1")
lb01v=Entry(root,textvariable=edit1,width=20)
lb01v.delete(0, END)
lb01v.insert(0, s[6:20])

lb01.grid(sticky=W,row=1,column=1)
lb01v.grid(row=1,column=2)


lb02=Label(root,text="sequence2")
lb02v=Entry(root,textvariable=edit2,width=20)
lb02v.delete(0, END)
lb02v.insert(0, s[0:6])

lb02.grid(sticky=W,row=2,column=1)
lb02v.grid(row=2,column=2)

root.mainloop()
EN

回答 4

Stack Overflow用户

发布于 2012-07-16 19:32:42

好的,我确实尝试了跟踪变量,在一小段测试代码中,这正是我要搜索的!!我喜欢这样一个事实:你可以很容易地在Python中创建原型;)

代码语言:javascript
运行
复制
def main():
    pass

if __name__ == '__main__':
    main()

from Tkinter import *

def callback(sv):
    c = sv.get()[0:9]
    print "c=" , c
    sv.set(c)

root = Tk()
sv = StringVar()
sv.trace("w", lambda name, index, mode, sv=sv: callback(sv))
e = Entry(root, textvariable=sv)
e.pack()
root.mainloop()
票数 3
EN

Stack Overflow用户

发布于 2019-03-15 15:28:00

我知道现在为这个问题添加任何答案都太晚了,只是找到了一种更简单的方法来表示Wabara的答案。如果您需要多个输入限制,并且每个输入限制都是用户定义的长度限制,这将很有帮助。这是一段在Python 3.6.5上工作的代码:

代码语言:javascript
运行
复制
def main():
    pass

if __name__ == '__main__':
    main()

from tkinter import *

def limit_entry(str_var,length):
    def callback(str_var):
        c = str_var.get()[0:length]
        str_var.set(c)
    str_var.trace("w", lambda name, index, mode, str_var=str_var: callback(str_var))

root = Tk()

abc = StringVar()
xyz = StringVar()

limit_entry(abc,3)
limit_entry(xyz,5)

e1 = Entry(root, textvariable=abc)
e2 = Entry(root, textvariable=xyz)

e1.pack()
e2.pack()
root.mainloop()
票数 2
EN

Stack Overflow用户

发布于 2012-07-15 19:57:33

最简单的解决方案是对变量进行跟踪。当跟踪触发时,请检查该值的长度,然后删除超出限制的任何字符。

如果您不喜欢该解决方案,Tkinter还提供了内置的工具来对条目小部件进行输入验证。这在一定程度上是Tkinter的一个文档不足的特性。有关示例,请参见问题Python/Tkinter: Interactively validating Entry widget contentmy answer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11491161

复制
相关文章

相似问题

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