检查 Python (3.4) Tkinter 条目是否已满
Check if Python (3.4) Tkinter Entry is Full
我正在使用标准的 tkinter 条目来输入目录路径。当用户按下回车键时——如果字符串的物理长度超过条目的长度,我希望程序将显示的文本修改为...[目录结束]。我已经弄清楚了这方面的后勤工作,但到目前为止 我还没有准确的方法来测试输入框是否已满,或者有多满
我尝试过的事情:
- 使用'PIL.ImageFont.truetype("font.otp",fontsize).size' - 无法计算剪切目录的点
- 简单地使用字符串的长度与条目的长度 - 不准确,因为我使用的字体(如果可能我不想更改)的长度因每个字符而异
我尝试的另一种妥协行为是在路径的开头创建条目 "look"。我尝试插入 at、选择 at 并将光标移动到位置 0,但其中 none 个有效
您可以使用Entry
的xview
方法。 xview
return 条目中显示的文本的可见部分。您可以使用它以交互方式创建适合条目的文本。
这是一个简单粗暴的概念证明
from tkinter import *
root = Tk()
v = StringVar(root)
e = Entry(root,textvariable=v)
e.pack(fill=BOTH)
v.set('abcdefghijklmnopqrstuvwxyz0123456789')
new_s = None
def check_length():
global new_s
original_s = v.get()
def shorten():
global new_s
e.xview(0)
if e.xview()[1] != 1.0:
new_s = new_s[:-4] + '...'
v.set(new_s)
print("new_s: " + new_s)
e.xview(0)
e.after(0,shorten)
print(e.xview()[1])
if e.xview() != (0.0,1.0):
new_s = original_s + '...'
shorten()
b = Button(root,text="hop",command=check_length)
b.pack()
e.mainloop()
我正在使用标准的 tkinter 条目来输入目录路径。当用户按下回车键时——如果字符串的物理长度超过条目的长度,我希望程序将显示的文本修改为...[目录结束]。我已经弄清楚了这方面的后勤工作,但到目前为止 我还没有准确的方法来测试输入框是否已满,或者有多满
我尝试过的事情:
- 使用'PIL.ImageFont.truetype("font.otp",fontsize).size' - 无法计算剪切目录的点
- 简单地使用字符串的长度与条目的长度 - 不准确,因为我使用的字体(如果可能我不想更改)的长度因每个字符而异
我尝试的另一种妥协行为是在路径的开头创建条目 "look"。我尝试插入 at、选择 at 并将光标移动到位置 0,但其中 none 个有效
您可以使用Entry
的xview
方法。 xview
return 条目中显示的文本的可见部分。您可以使用它以交互方式创建适合条目的文本。
这是一个简单粗暴的概念证明
from tkinter import *
root = Tk()
v = StringVar(root)
e = Entry(root,textvariable=v)
e.pack(fill=BOTH)
v.set('abcdefghijklmnopqrstuvwxyz0123456789')
new_s = None
def check_length():
global new_s
original_s = v.get()
def shorten():
global new_s
e.xview(0)
if e.xview()[1] != 1.0:
new_s = new_s[:-4] + '...'
v.set(new_s)
print("new_s: " + new_s)
e.xview(0)
e.after(0,shorten)
print(e.xview()[1])
if e.xview() != (0.0,1.0):
new_s = original_s + '...'
shorten()
b = Button(root,text="hop",command=check_length)
b.pack()
e.mainloop()