博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BWidget部件
阅读量:6275 次
发布时间:2019-06-22

本文共 9542 字,大约阅读时间需要 31 分钟。

  hot3.png

Go语言的tcl/tk gui库BWidget

注:这是一篇主要介绍BWidget部件的文章,插有介绍一两个tcl/tk标准部件 

Lable 部件

package require BWidget

pack [Label .l -text Lable -helptext 这是一个Label]
162842_o8bg_2315579.jpg
Entry 部件

package require BWidget

set var 输入内容
pack [Entry .e -helptext 输入框 -textvariable var]

163216_ZQhK_2315579.jpg

Button部件

package require BWidget

pack [Button .b -text 按钮 -helptext 点击会退出 -command exit]

163423_7hWG_2315579.jpg

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

163930_bhkl_2315579.jpg

(这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

164426_srRO_2315579.jpg164942_O9l9_2315579.jpg

(BWidget部件所带的进度条不如Gui库作者的async.go里的进度条好看(这个是标准部件),在vtcl里还有一种进度条不过不知道如何用)

Separator

package require BWidget

pack [Separator .s -orient horizontal] -pady 10 -fill x

170012_ga2Y_2315579.jpg

LabelEntry

package require BWidget

set thevalue 输入内容
pack [LabelEntry .le2 -label 输入框 -helptext 带标签的输入框 -textvariable thevalue]
170249_EhPj_2315579.jpg
ComboBox
package require BWidget
set var {苹果1 苹果2 水果3 火龙果4}
pack [ComboBox .c  -helptext 这是一个ComboBox -values $var]
.c setvalue first
171000_Lxfi_2315579.jpg
(其实还有很多参数可以设置的,比如各种颜色,大小等,具体参考ActiveX Tcl的文档)
暂时写到这了,有时间再接着写
SpinBox

package require BWidget

pack [SpinBox .sb  -helptext SpinBoxTip -range {1 10 1}]
115618_gqtF_2315579.jpg
Tree
package require BWidget
Tree .tree -opencmd "change 1" -closecmd "change 0"
pack .tree
entry .entry -textvariable var
pack .entry -fill x
.tree insert end root root1 -text root1 -image [Bitmap::get openfold] -open 1
.tree insert end root 根目录2 -text 根目录2 -image [Bitmap::get openfold] -open 1
.tree insert end root1 root1/子目录1 -text 子目录1 -image [Bitmap::get file]
.tree insert end root1 root1/子目录2 -text 子目录2 -image [Bitmap::get file]
.tree insert end root1 root1/子目录3 -text 子目录3 -image [Bitmap::get file]
.tree insert end 根目录2 根目录2/子目录1 -text 子目录1 -image [Bitmap::get file]
.tree insert end 根目录2 根目录2/子目录2 -text 子目录2 -image [Bitmap::get file]
.tree insert end 根目录2 根目录2/子目录3 -text 子目录3 -image [Bitmap::get file]
.tree bindText <1> click
proc change {idx node} {
   .tree itemconfigure $node -image [Bitmap::get [lindex {folder openfold} $idx]]
}
proc click {node} {
   global var
   .tree selection set $node
   set var [.tree selection get]
}

120449_cLAf_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

MessageDlg

package require BWidget
MessageDlg .md -title thetitle -icon info -message "msg 内容" -type ok
124044_iP0f_2315579.jpg
tk_messageBox(非BWidget部件)
set answer [tk_messageBox -message "Really quit?" \
       -icon question -type yesno \
       -detail "Select \"Yes\" to make the application exit"]
switch -- $answer {
   yes exit
   no {tk_messageBox -message "I know you like this application!" \
           -type ok}
}
124425_Eth8_2315579.jpg
set button [tk_messageBox -icon info -type ok  \    -title Message -parent .\
    -message "This is a \"ok \" type messagebox with the \"info\" icon"]
tk_messageBox -icon info -message "You have selected \"$button\"" -type ok\
    -parent .
}
125753_adj4_2315579.jpg
ProgressDlg
package require BWidget
set mesg value2
ProgressDlg .pd -title 进度条 -maximum 10 -variable var -stop 中止 \
   -textvariable mesg -command exit
set var 5
130054_W4nT_2315579.jpg
PasswdDlg
package require BWidget
set login "name"
set passwd "12345"
PasswdDlg .pd -title 密码对话框 -loginlabel Login -passwdlabel Password \
   -command exit -logintextvariable login -passwdtextvariable passwd
130335_74rF_2315579.jpg
SelectFont
package require BWidget
SelectFont .sf -title 字体选择对话框 -sampletext "ABCDE abcde Go语言" -type dialog
130613_HpVT_2315579.jpg
package require BWidget
SelectFont .sf -title 字体选择工具条型 -sampletext "ABCDE abcde Go语言" -type toolbar
pack .sf
130832_vaw6_2315579.jpg
SelectColor

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

【标准部件的ChooseColor】

package mainimport "github.com/nsf/gothic"const init_script = `set color [tk_chooseColor -title 选取颜色]`func main() {    ir := gothic.NewInterpreter(init_script)    <-ir.Done}

012921_ZTIZ_2315579.jpgNoteBook

package require BWidget
pack [NoteBook .n -side top -width 150 -height 50] -fill both
.n insert end cmda -text 书签1 -createcmd cmda
.n insert end cmdb -text 书签2 -createcmd cmdb
.n insert end cmdc -text 书签3 -createcmd cmdc
after 100 {.n raise [.n page 0]}
proc cmda {} {
   set frame [.n getframe cmda]
   pack [button $frame.b -text 书签1内容] -anchor c
}
proc cmdb {} {
   set frame [.n getframe cmdb]
   pack [button $frame.b -text 书签2内容] -anchor c
}
proc cmdc {} {
   set frame [.n getframe cmdc]
   pack [button $frame.b -text 书签3内容] -anchor c
}
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}

225227_Z6hE_2315579.jpg

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}

231002_4Sto_2315579.jpg

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}

004411_fwyY_2315579.jpg

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}

005233_UkOE_2315579.jpg

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}

005736_pEfz_2315579.jpg

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}

005934_ludZ_2315579.jpg

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}

010316_54BQ_2315579.jpg

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}

010800_AUlK_2315579.jpg

内容拖动(把文本区内容拖动复制到文本区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}

011230_5HPI_2315579.jpg

【BWidget部件的简介到此完结,更多深入的应用自己去摸索,不要问我,我也不会】

【注明:可以收藏但请不要转载本文在别的地方】

转载于:https://my.oschina.net/tsl/blog/409105

你可能感兴趣的文章
webpack是如何实现前端模块化的
查看>>
TCP的三次握手四次挥手
查看>>
关于redis的几件小事(六)redis的持久化
查看>>
package.json
查看>>
webpack4+babel7+eslint+editorconfig+react-hot-loader 搭建react开发环境
查看>>
Maven 插件
查看>>
初探Angular6.x---进入用户编辑模块
查看>>
计算机基础知识复习
查看>>
【前端词典】实现 Canvas 下雪背景引发的性能思考
查看>>
大佬是怎么思考设计MySQL优化方案的?
查看>>
<三体> 给岁月以文明, 给时光以生命
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>
vue中数组变动不被监测问题
查看>>
3.31
查看>>
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>