对此仍然很陌生,我为自己创造了一个我无法解决的有趣问题......
我正在尝试设计自己的“弹出”框,允许用户编辑现有字符串。它在按下按钮时弹出,在输入框中显示字符串。一旦用户编辑了字符串(或没有),他点击“确定”按钮,它就消失了,脚本现在应该有新的字符串了。
我的方法是这样的:
按下按钮时,创建一个包含三个小部件的顶级窗口:
- 简单标签“编辑字符串,完成后按确定”;
- 包含预定义字符串的可编辑条目;
- 按钮“OK”,按下时会破坏顶层窗口。
我已经开始工作了,但不知道如何获取编辑后的字符串。
我意识到我的根本问题是我没有以“事件驱动”的方式思考。看起来这应该很容易做到,但此时我看不到森林。
我错过了什么?我是否过于复杂了?
#!/usr/bin/wish
# Create the Pop-up box
proc popUpEntry { labelString } {
global myString
puts "POP:myString = $myString"
set top [toplevel .top]
set labelPop [label $top.labelPop -text $labelString ]
set entryPop [entry $top.entryPop -bg white -width 20 -textvar $myString ]
set buttonPop [button $top.buttonPop -text "Ok" -command { destroy .top } ]
pack $labelPop
pack $entryPop
pack $buttonPop
}
# Pop-up command
proc DoPop {} {
global myString
set popUpLabel "Edit string, press ok when done:"
puts "Before: myString = $myString"
popUpEntry $popUpLabel
puts "After: myString = $myString"
}
# Initalize
set myString "String at start"
# Pop-up button invokes the pop-up command
set buttonPop [button .buttonPop -width 10 -text "Pop" -command {DoPop} ]
pack $buttonPop
#