2013-06-27 33 views
0

我需要創建具有輸入線和一個按鈕的窗口,將工作是這樣的:創建Tcl的Tk的一個CAPS按鈕

按鈕將被標記爲「CAPS」,當它被按下,輸入行上的文本將變爲大寫字符。與此同時,按鈕標籤將變爲「小」,當再次按下時,輸入行中的所有字符將變成小寫字符,並且該按鈕將再次被標記爲「CAPS」以重置其功能。

+0

這聽起來像是個好主意。你難以使其工作?請描述問題,我們會盡力幫助您解決問題。 – nurdglaw

+0

當然。告訴我們你已經嘗試了什麼,我相信我們可以提供幫助。在這種情況下的一個關鍵洞察就是要記住,您可以使用「configure」作爲按鈕按下時執行的回調的一部分來更改按鈕的文本。 –

回答

2

如果「算法」是非常基本的,我會見了TCL的最大困難是這種語法,這似乎有點怪:

#!/usr/bin/env wish 

pack [entry .e] 
pack [button .b -text "Uppercase" -command "ToggleCase"] 

proc ToggleCase {} { 
    set temp [.e get] 
    .e delete 0 end 
    if {[.b cget -text] eq "Uppercase"} { 
     .e insert 0 [string toupper $temp] 
     .b configure -text "Lowercase" 
    } else { 
     .e insert 0 [string tolower $temp] 
     .b configure -text "Uppercase" 
    } 
} 
+0

你的代碼原則上是正確的,但我很好奇Tcl語法在你眼中是什麼問題? –

+0

FWIW,可以通過(ab)使用驗證機制 - 在按鍵級別實施更改 - 可以做得更好 - 但要做出正確的決定還有很多工作要做。 (我試着根據這個寫一個答案,但是對於其他人來說,這個答案太長,複雜而且很難。) –