构建 tk window 文件搜索应用程序
building tk window application for file searching
你好,我正在构建一个 window 工具,其中将有一个目录模式条目和一个 return 条目,用于给出特定模式的文件数并计算我点击的按钮将获得 return 条目中的文件数。
密码是:
package require Tk
wm title . "Validating number of files"
grid [ttk::frame .c -padding "3 3 12 12"] -column 0 -row 0 -sticky nwes
grid columnconfigure . 0 -weight 1; grid rowconfigure . 0 -weight 1
#takes the input value for directory_Pattern
grid [ttk::entry .c.directory_Pattern -width 20 -textvariable directory_Pattern] -column 2 -row 1 -sticky we
grid [ttk::entry .c.numberOfFiles -width 20 -textvariable numberOfFiles] -column 2 -row 2 -sticky we
grid [ttk::button .c.glob-r -text "Calculate" -command glob-r] -column 3 -row 3 -sticky w
grid [ttk::label .c.flbl -text "directory_Pattern"] -column 3 -row 1 -sticky w
grid [ttk::label .c.islbl -text "is equivalent to"] -column 1 -row 2 -sticky e
grid [ttk::label .c.mlbl -text "numberOfFiles"] -column 3 -row 2 -sticky w
foreach w [winfo children .c] {grid configure $w -padx 5 -pady 5}
focus .c.directory_Pattern
bind . <Return> {glob-r}
proc glob-r {{dir .} args} {
if {[catch {
set res {}
foreach i [lsort [glob -nocomplain -dir $dir *]] {
if {[file isdirectory $i]} {
eval [list lappend res] [eval [linsert $args 0 glob-r $i]]
} else {
if {[llength $args]} {
foreach arg $args {
if {[string match $arg $i]} {
lappend res $i
break
}
}
} else {
lappend res $i
}
}
}
return $res
set ::numberOfFiles [$res]
}]!=""} {
set ::numberOfFiles "no files are there"
}
}
但是当我在 directory_patter 中输入 "E: *.tcl" 时,我在单击计算按钮时在 numberOfFiles 中得到 "no files are there" 。
有人可以帮忙吗?
您需要在首次调用时将 directory_Pattern
传递给 glob-r
过程 - 目前它无处可去!
grid [ttk::button .c.glob-r -text "Calculate" -command {glob-r $directory_Pattern}] -column 3 -row 3 -sticky w
你好,我正在构建一个 window 工具,其中将有一个目录模式条目和一个 return 条目,用于给出特定模式的文件数并计算我点击的按钮将获得 return 条目中的文件数。
密码是:
package require Tk
wm title . "Validating number of files"
grid [ttk::frame .c -padding "3 3 12 12"] -column 0 -row 0 -sticky nwes
grid columnconfigure . 0 -weight 1; grid rowconfigure . 0 -weight 1
#takes the input value for directory_Pattern
grid [ttk::entry .c.directory_Pattern -width 20 -textvariable directory_Pattern] -column 2 -row 1 -sticky we
grid [ttk::entry .c.numberOfFiles -width 20 -textvariable numberOfFiles] -column 2 -row 2 -sticky we
grid [ttk::button .c.glob-r -text "Calculate" -command glob-r] -column 3 -row 3 -sticky w
grid [ttk::label .c.flbl -text "directory_Pattern"] -column 3 -row 1 -sticky w
grid [ttk::label .c.islbl -text "is equivalent to"] -column 1 -row 2 -sticky e
grid [ttk::label .c.mlbl -text "numberOfFiles"] -column 3 -row 2 -sticky w
foreach w [winfo children .c] {grid configure $w -padx 5 -pady 5}
focus .c.directory_Pattern
bind . <Return> {glob-r}
proc glob-r {{dir .} args} {
if {[catch {
set res {}
foreach i [lsort [glob -nocomplain -dir $dir *]] {
if {[file isdirectory $i]} {
eval [list lappend res] [eval [linsert $args 0 glob-r $i]]
} else {
if {[llength $args]} {
foreach arg $args {
if {[string match $arg $i]} {
lappend res $i
break
}
}
} else {
lappend res $i
}
}
}
return $res
set ::numberOfFiles [$res]
}]!=""} {
set ::numberOfFiles "no files are there"
}
}
但是当我在 directory_patter 中输入 "E: *.tcl" 时,我在单击计算按钮时在 numberOfFiles 中得到 "no files are there" 。 有人可以帮忙吗?
您需要在首次调用时将 directory_Pattern
传递给 glob-r
过程 - 目前它无处可去!
grid [ttk::button .c.glob-r -text "Calculate" -command {glob-r $directory_Pattern}] -column 3 -row 3 -sticky w