我經常發現自己使用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
在第5行(?)不存在錯誤,並且沒有影響。如果我嘗試after 10
則沒有效果。如果我省略after n
並執行update idletasks; $ent xview moveto 1.0
,則不起作用。
「無效」意味着對話框顯示「快速棕色狐狸跳」,字符串的其餘部分被隱藏。使用上面的代碼,它顯示最初但在一秒鐘後(如預期的那樣,確實如同編碼)它切換顯示「跳過懶狗」,其餘隱藏。用戶能夠看到未滾動的文本是不可取的,但除了選擇等待的毫秒數之外,我無法解決如何避免它。
+1迷人的問題。 「