📄 manager.tcl
字号:
namespace eval DemoManager { variable _progress 0 variable _afterid "" variable _status "Compute in progress..." variable _homogeneous 0}proc DemoManager::create { nb } { set frame [$nb insert end demoManager -text "Manager"] set topf [frame $frame.topf] set titf1 [TitleFrame $topf.titf1 -text "MainFrame"] set titf2 [TitleFrame $topf.titf2 -text "NoteBook"] set titf3 [TitleFrame $frame.titf3 -text "Paned & ScrolledWindow"] _mainframe [$titf1 getframe] _notebook [$titf2 getframe] _paned [$titf3 getframe] pack $titf1 $titf2 -padx 4 -side left -fill both -expand yes pack $topf -fill x -pady 2 pack $titf3 -pady 2 -padx 4 -fill both -expand yes return $frame}proc DemoManager::_mainframe { parent } { set labf1 [LabelFrame $parent.labf1 -text "Toolbar" -side top -anchor w \ -relief sunken -borderwidth 2] set subf [$labf1 getframe] checkbutton $subf.chk1 -text "View toolbar 1" -variable Demo::toolbar1 \ -command {$Demo::mainframe showtoolbar 0 $Demo::toolbar1} checkbutton $subf.chk2 -text "View toolbar 2" -variable Demo::toolbar2 \ -command {$Demo::mainframe showtoolbar 1 $Demo::toolbar2} pack $subf.chk1 $subf.chk2 -anchor w -fill x pack $labf1 -fill both set labf2 [LabelFrame $parent.labf2 -text "Status bar" -side top -anchor w \ -relief sunken -borderwidth 2] set subf [$labf2 getframe] checkbutton $subf.chk1 -text "Show Progress\nindicator" -justify left \ -variable DemoManager::_progress \ -command {DemoManager::_show_progress} pack $subf.chk1 -anchor w -fill x pack $labf1 $labf2 -side left -padx 4 -fill both}proc DemoManager::_notebook { parent } { checkbutton $parent.chk1 -text "Homogeneous label" \ -variable DemoManager::_homogeneous \ -command {$Demo::notebook configure -homogeneous $DemoManager::_homogeneous} pack $parent.chk1 -side left -anchor n -fill x}proc DemoManager::_paned { parent } { set pw1 [PanedWindow $parent.pw -side top] set pane [$pw1 add -minsize 100] set pw2 [PanedWindow $pane.pw -side left] set pane1 [$pw2 add -minsize 100] set pane2 [$pw2 add -minsize 100] set pane3 [$pw1 add -minsize 100] foreach pane [list $pane1 $pane2] { set sw [ScrolledWindow $pane.sw] set lb [listbox $sw.lb -height 8 -width 20 -highlightthickness 0] for {set i 1} {$i <= 8} {incr i} { $lb insert end "Value $i" } $sw setwidget $lb pack $sw -fill both -expand yes } set sw [ScrolledWindow $pane3.sw -relief sunken -borderwidth 2] set sf [ScrollableFrame $sw.f] $sw setwidget $sf set subf [$sf getframe] set lab [label $subf.lab -text "This is a ScrollableFrame"] set chk [checkbutton $subf.chk -text "Constrained width" \ -variable DemoManager::_constw \ -command "$sf configure -constrainedwidth \$DemoManager::_constw"] pack $lab pack $chk -anchor w bind $chk <FocusIn> "$sf see $chk" for {set i 0} {$i <= 20} {incr i} { pack [entry $subf.ent$i -width 50] -fill x -pady 4 bind $subf.ent$i <FocusIn> "$sf see $subf.ent$i" $subf.ent$i insert end "Text field $i" } pack $sw $pw2 $pw1 -fill both -expand yes}proc DemoManager::_show_progress { } { variable _progress variable _afterid variable _status if { $_progress } { set Demo::status "Compute in progress..." set Demo::prgindic 0 $Demo::mainframe showstatusbar progression if { $_afterid == "" } { set _afterid [after 30 DemoManager::_update_progress] } } else { set Demo::status "" $Demo::mainframe showstatusbar status set _afterid "" }}proc DemoManager::_update_progress { } { variable _progress variable _afterid if { $_progress } { if { $Demo::prgindic < 100 } { incr Demo::prgindic 5 set _afterid [after 30 DemoManager::_update_progress] } else { set _progress 0 $Demo::mainframe showstatusbar status set Demo::status "Done" set _afterid "" after 500 {set Demo::status ""} } } else { set _afterid "" }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -