Tkinter输入框字符限制

3

我只想在TKinter输入框中允许一个字符。我该怎么做?


3
可能的答案:http://mail.python.org/pipermail/tkinter-discuss/2006-August/000863.html - unutbu
3个回答

16

5年后,我又来到这里 :)

from tkinter import *

Window = Tk()
Window.geometry("200x200+50+50") # heightxwidth+x+y

mainPanel = Canvas(Window, width = 200, height = 200) # main screen
mainPanel.pack()

entry_text = StringVar() # the text in  your entry
entry_widget = Entry(mainPanel, width = 20, textvariable = entry_text) # the entry
mainPanel.create_window(100, 100, window = entry_widget)

def character_limit(entry_text):
    if len(entry_text.get()) > 0:
        entry_text.set(entry_text.get()[-1])

entry_text.trace("w", lambda *args: character_limit(entry_text))

您可以更改以下代码行:entry_text.set(entry_text.get()[-1]),更改方括号中的索引以更改范围。

例如: entry_text.set(entry_text.get()[:5]) 限制前5个字符 entry_text.set(entry_text.get()[-5:]) 限制后5个字符 entry_text.set(entry_text.get()[:1]) 仅限第一个字符 entry_text.set(entry_text.get()[:-1]) 仅限最后一个字符


我认为,最好将 entry_text.set(entry_text.get()[-1]) 改为 entry_text.set(entry_text.get()[:1])。 - undefined

2

您可以从entry.get()获取字符串,验证其长度是否大于1,并删除超出设置长度的字符。

if len(entry.get()) > 1:
    entry.delete(1, END)

在if语句中,数字1是您的限制。delete() 1是从哪里开始删除。因此,第一个字符之后的所有内容都将被删除。


1
如何在输入框中强制限制字符数? - Uyghur Lives Matter

-3

很可能在tkinter中有一种方法可以不用自己编写代码来完成这个,但我不知道它是什么,这应该会有所帮助。

from Tkinter import *
def go():
    text = textbox.get()[0]  #finds the first character
    textbox.delete(0, END)   #deletes everything
    textbox.insert(0, text)  #inserts the first character at the beginning

textbox = Entry(root).pack()
button = Button(root, command=go).pack()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接