2015-01-15 2 views
0

hi Я задерживаю инструмент окна, где будет одна запись для шаблона каталога и запись возврата для выдачи количества файлов определенного шаблона и вычисления нажатия кнопки, которое я получу количество файлов в записи возврата. enter image description herebuilding tk window application for file search

Код:

  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" 
     } 
     } 

но когда я вошел в "E: * .tcl" в directory_patter, я получаю "нет файлов есть" в numberOfFiles по нажатию кнопки расчета. Может ли кто-нибудь помочь?

+0

любой ответ на этот запрос –

+0

я мог бы что-то отсутствует, но я не могу увидеть, где вы используете 'directory_Pattern' ... – Captain

+0

@captain: спасибо, чтобы понять это, я дал его в фокусе. но код не работает –

ответ

0

Вам необходимо пройти directory_Pattern к процедуре glob-r, когда вы впервые позвоните - на данный момент это никуда!

grid [ttk::button .c.glob-r -text "Calculate" -command {glob-r $directory_Pattern}] -column 3 -row 3 -sticky w 
+0

спасибо за выделение, но все же после изменений я не получаю желаемый результат –