我需要創建具有輸入線和一個按鈕的窗口,將工作是這樣的:創建Tcl的Tk的一個CAPS按鈕
按鈕將被標記爲「CAPS」,當它被按下,輸入行上的文本將變爲大寫字符。與此同時,按鈕標籤將變爲「小」,當再次按下時,輸入行中的所有字符將變成小寫字符,並且該按鈕將再次被標記爲「CAPS」以重置其功能。
我需要創建具有輸入線和一個按鈕的窗口,將工作是這樣的:創建Tcl的Tk的一個CAPS按鈕
按鈕將被標記爲「CAPS」,當它被按下,輸入行上的文本將變爲大寫字符。與此同時,按鈕標籤將變爲「小」,當再次按下時,輸入行中的所有字符將變成小寫字符,並且該按鈕將再次被標記爲「CAPS」以重置其功能。
如果「算法」是非常基本的,我會見了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"
}
}
你的代碼原則上是正確的,但我很好奇Tcl語法在你眼中是什麼問題? –
FWIW,可以通過(ab)使用驗證機制 - 在按鍵級別實施更改 - 可以做得更好 - 但要做出正確的決定還有很多工作要做。 (我試着根據這個寫一個答案,但是對於其他人來說,這個答案太長,複雜而且很難。) –
這聽起來像是個好主意。你難以使其工作?請描述問題,我們會盡力幫助您解決問題。 – nurdglaw
當然。告訴我們你已經嘗試了什麼,我相信我們可以提供幫助。在這種情況下的一個關鍵洞察就是要記住,您可以使用「configure」作爲按鈕按下時執行的回調的一部分來更改按鈕的文本。 –