Go语言的tcl/tk gui库之BWidget包
注:这是一篇主要介绍BWidget部件的文章,插有介绍一两个tcl/tk标准部件
Lable 部件
package require BWidget
pack [Label .l -text Lable -helptext 这是一个Label]![162842_o8bg_2315579.jpg](http://static.oschina.net/uploads/space/2015/0502/162842_o8bg_2315579.jpg)
package require BWidget
set var 输入内容 pack [Entry .e -helptext 输入框 -textvariable var]Button部件
package require BWidget
pack [Button .b -text 按钮 -helptext 点击会退出 -command exit]ArrowButton部件
package require BWidget
ArrowButton .b1 -helptext up -dir top ArrowButton .b2 -helptext down -dir bottom ArrowButton .b3 -helptext left -dir left ArrowButton .b4 -helptext right -dir right pack .b1 .b2 .b3 .b4 -side left(这ArrowButton不啥好看,不过Button可以使用img图像做按钮)
ProcessBar部件
package require BWidget
pack [ProgressBar .p -maximum 10 -variable value]
set value 5pack [ttk::progressbar .bar1 -variable value2] -padx 20 -pady 20set value2 50
(BWidget部件所带的进度条不如Gui库作者的async.go里的进度条好看(这个是标准部件),在vtcl里还有一种进度条不过不知道如何用)
Separator
package require BWidgetpack [Separator .s -orient horizontal] -pady 10 -fill x
LabelEntry
package require BWidget
set thevalue 输入内容 pack [LabelEntry .le2 -label 输入框 -helptext 带标签的输入框 -textvariable thevalue]![170249_EhPj_2315579.jpg](http://static.oschina.net/uploads/space/2015/0502/170249_EhPj_2315579.jpg)
![171000_Lxfi_2315579.jpg](http://static.oschina.net/uploads/space/2015/0502/171000_Lxfi_2315579.jpg)
package require BWidget
pack [SpinBox .sb -helptext SpinBoxTip -range {1 10 1}]![115618_gqtF_2315579.jpg](http://static.oschina.net/uploads/space/2015/0505/115618_gqtF_2315579.jpg)
ListBox
package require BWidgetpack [ListBox .lb]
.lb insert end folder -text Lb1 -image [Bitmap::get folder].lb insert end openfold -text Lb2 -image [Bitmap::get openfold].lb insert end new -text node1 -image [Bitmap::get new] -indent 20.lb insert end file -text node2 -image [Bitmap::get file] -indent 20.lb selection set new![120748_8eUf_2315579.jpg](http://static.oschina.net/uploads/space/2015/0505/120748_8eUf_2315579.jpg)
MessageDlg
package require BWidgetMessageDlg .md -title thetitle -icon info -message "msg 内容" -type ok![124044_iP0f_2315579.jpg](http://static.oschina.net/uploads/space/2015/0506/124044_iP0f_2315579.jpg)
![124425_Eth8_2315579.jpg](http://static.oschina.net/uploads/space/2015/0506/124425_Eth8_2315579.jpg)
![125753_adj4_2315579.jpg](http://static.oschina.net/uploads/space/2015/0506/125753_adj4_2315579.jpg)
![130054_W4nT_2315579.jpg](http://static.oschina.net/uploads/space/2015/0506/130054_W4nT_2315579.jpg)
![130335_74rF_2315579.jpg](http://static.oschina.net/uploads/space/2015/0506/130335_74rF_2315579.jpg)
![130613_HpVT_2315579.jpg](http://static.oschina.net/uploads/space/2015/0506/130613_HpVT_2315579.jpg)
![130832_vaw6_2315579.jpg](http://static.oschina.net/uploads/space/2015/0506/130832_vaw6_2315579.jpg)
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetset color [SelectColor .sc -title 色彩选择框 -type dialog]pack .sc`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
![131105_AVJA_2315579.jpg](http://static.oschina.net/uploads/space/2015/0506/131105_AVJA_2315579.jpg)
【标准部件的ChooseColor】
package mainimport "github.com/nsf/gothic"const init_script = `set color [tk_chooseColor -title 选取颜色]`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
NoteBook
![132227_Q8Wl_2315579.jpg](http://static.oschina.net/uploads/space/2015/0506/132227_Q8Wl_2315579.jpg)
MainFrame:
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetset descmenu { "&File" {} {} 0 { {command "E&xit" {} "退出程序" {} -command exit} } "&Edit" {} {} 0 { }}set var 状态MainFrame .mf -menu $descmenu -textvariable var -separator bothpack .mf -fill both -expand 1set frame1 [.mf addtoolbar]set bbox [ButtonBox $frame1.bbox -spacing 0 -padx 1 -pady 1]$bbox add -image [Bitmap::get new] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ $bbox add -image [Bitmap::get open] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ $bbox add -image [Bitmap::get save] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ pack $bbox -side left -anchor w.mf addindicator -text NUM`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
LabelFrame
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetpack [LabelFrame .lf -text aaa -side top -relief groove -bd 3] -fill both -expand 1set frame [.lf getframe]pack [Button $frame.b -text 按钮] -anchor c`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
TitleFrame
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetpack [TitleFrame .tf -text name—1 -side left] -fill both -expand 1set frame [.tf getframe]pack [Button $frame.b -text 按钮] -anchor c`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
ScrollableFrame
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetScrollableFrame .sf -yscrollcommand {.y set} -xscrollcommand {.x set} -width 140 -height 50scrollbar .y -command {.sf yview}scrollbar .x -orient horizontal -command {.sf xview}grid .sf .y -sticky nsgrid .x -sticky weset frame [.sf getframe]for {set i 0} {$i < 10} {incr i} { pack [LabelEntry $frame.$i -label 输入栏$i] -side top}`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
PanedWindow
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetpack [PanedWindow .pw -side left -pad 0] -fill both.pw add -weight 1set frame [.pw getframe 0]pack [listbox $frame.l1 -bg white -height 2] -anchor c$frame.l1 insert end 这是一个listbox-1 这是一个listbox-2 这是一个listbox-3.pw add -weight 1set frame [.pw getframe 1]pack [listbox $frame.l2 -bg white -height 2] -anchor c$frame.l2 insert end 这也是一个listbox-1 这也是一个listbox-2 这也是一个listbox-3`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
ButtonBox
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetset bbox [ButtonBox .bbox -spacing 0 -padx 1 -pady 1]$bbox add -image [Bitmap::get new] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ $bbox add -image [Bitmap::get open] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ $bbox add -image [Bitmap::get save] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ pack $bbox -side left -anchor w`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
Dialog
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetDialog .dlg -title 对话框 -parent . -default 0 -cancel 1 -modal local.dlg add -name ok.dlg add -name cancelset frame [.dlg getframe]pack [message $frame.m -text {天上掉下个林妹妹}].dlg draw`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
PagesManager
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetbutton .b1 -text 最左 -command {.pm raise 最左}button .b2 -text 中 -command {.pm raise 中}button .b3 -text 最后 -command {.pm raise 最后}PagesManager .pm -width 100 -height 50grid .b1 .b2 .b3grid .pm - -.pm add 最左set frame1 [.pm getframe 最左]pack [label $frame1.l -text 最左 -bd 50].pm add 中set frame2 [.pm getframe 中]pack [label $frame2.l -text 中 -bd 50].pm add 最后set frame3 [.pm getframe 最后]pack [label $frame3.l -text 最后 -bd 50].pm raise 最左`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
内容拖动(把文本区内容拖动复制到文本区2)
package mainimport "github.com/nsf/gothic"const init_script = `package require BWidgetset var 文本区内容的拖动set titf1 [TitleFrame .titf1 -text "源内容"]set subf [$titf1 getframe]pack [LabelEntry $subf.drag -label Entry1 -dragenabled 1 -dragevent 1 -textvariable var] -side toppack $titf1set titf2 [TitleFrame .titf2 -text "至目标"]set subf [$titf2 getframe]pack [LabelEntry $subf.drop -label Entry2 -dropenabled 1] -side toppack $titf2`func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done}
【BWidget部件的简介到此完结,更多深入的应用自己去摸索,不要问我,我也不会】
【注明:可以收藏但请不要转载本文在别的地方】