我经常发现自己使用 ttk::entry 小部件编写 Tk 对话框来提示输入文件名。我将用户的最后输入保存到这样的对话框中,并在下次显示时将其显示为默认值。
在我填充了小部件之后,如果完整的文件名比输入框长,那么它将显示最左边的几个字符,这些字符通常是文件名中不太有趣的部分,我宁愿它显示最右边的字符。
我发现尝试$entryWidget xview
立即使用效果不佳-它什么也没做,我认为这是由于某些竞争条件-所以我开始写作
after $N $entryWidget xview moveto 1.0
有没有更好的方法,如果没有,N 有什么好的选择?我不喜欢有神奇的数字,据我记得,after 0
没有正常工作,也没有after idle
。
这是一个演示问题的示例
package require Tk
set ent [ttk::entry .ent]
pack $ent -fill both -expand yes
$ent insert end "The quick brown fox jumps over the lazy dog"
after 1000 $ent xview moveto 1.0
set btn [ttk::button .btn -text Dismiss -command exit]
pack $btn -fill both -expand yes
没有after 1000
at line 5(?) 没有错误,也没有效果。如果我尝试after 10
没有效果。如果我省略after n
and doupdate idletasks; $ent xview moveto 1.0
没有效果。
“无效果”表示对话框显示“棕狐快跳”,其余字符串被隐藏。使用上面的代码,它最初显示但在一秒钟后(正如预期的那样,实际上,正如编码的那样)它切换到显示“跳过懒狗”,其余部分隐藏。用户不希望看到未滚动的文本,但除了选择一个神奇的毫秒数等待之外,我不知道如何避免它。