## Tcl9.0.3/Tk9.0.3 Documentation > Tk Commands > busy

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    busy — Tk 部品を慌忙にし､一時的に使用者との対話を阻む Make Tk widgets busy, temporarily blocking user interactions
  SYNOPSIS
  説明 DESCRIPTION
  緒論　INTRODUCTION
  実施例 EXAMPLE
  操作 　OPERATIONS
    tk busy window ?option value?...
    tk busy busywindow window
    tk busy cget window option
    tk busy configure window ?option value?...
    tk busy current ?pattern?
    tk busy forget window ?window?...
    tk busy hold window ?option value?...
      -cursor cursorName
    tk busy status window
  行事処理　　EVENT HANDLING
  束縛　　BINDINGS
  侵入/離脱 行事　　ENTER/LEAVE EVENTS
  鍵盤行事 　KEYBOARD EVENTS
  互換性 　PORTABILITY
  SEE ALSO
  KEYWORDS

### NAME

busy — Tk 部品を慌忙にし､一時的に使用者との対話を阻む Make Tk widgets busy, temporarily blocking user interactions

### SYNOPSIS

tk busy window ?options?
tk busy busywindow window
tk busy hold window ?options?
tk busy configure window ?option value?...
tk busy forget window ?window ?...
tk busy current ?pattern?
tk busy status window

### 説明 DESCRIPTION

tk busy 命令は､部品の遊走子を構成設定可能な繁忙遊走子で上書きする間､Tk 部品からマウス遊走子行事を阻止する簡単な手段を提供する｡注意すべきはこの命令は 繁忙にされる部品から送られる鍵盤行事を妨げることはない(訳註 8.6版 新命令)｡　　　 The tk busy command provides a simple means to block mouse pointer events from Tk widgets, while overriding the widget's cursor with a configurable busy cursor. Note this command does not prevent keyboard events from being sent to the widgets made busy.

### 緒論　INTRODUCTION

応用譜の中で使用者がとる行動を暫く抑制したいことが頻繁にある｡譬えば､押すと何かの処理が始まる “実行” 釦を有する応用譜｡しかし､応用譜が忙しく処理している間､使用者が “実行” 釦を再押しできないことを望むかもしれない｡また､使用者に他の処理譜から “印刷” 釦の軽叩の様なことを 抑制したいと望むかもしれない｡ 　　 There are many times in applications where you want to temporarily restrict what actions the user can take. For example, an application could have a “Run” button that when pressed causes some processing to occur. However, while the application is busy processing, you probably don't want the user to be able to click the “Run” button again. You may also want restrict the user from other tasks such as clicking a “Print” button.

この tk busy 命令は Tk 部品を繁忙にさせる｡その意味は､釦の軽叩､マウスの移動､鍵盤の打鍵､等の様な使用者の対話機能が部品により無視される｡特別の遊走子(砂時計の様な)が部品の通常の遊走子を乗っ取り､応用譜(部品)が暫時繁忙である旨を返すことを実現する｡ 　　　 The tk busy command lets you make Tk widgets busy. This means that user interactions such as button clicks, moving the mouse, typing at the keyboard, etc. are ignored by the widget. You can set a special cursor (like a watch) that overrides the widget's normal cursor, providing feedback that the application (widget) is temporarily busy.

部品は繁忙にされている間､その部品とその全ての子孫は遊走子行事を無視するようになる｡部品の全体枠板を繁忙にすることは容易である｡頂上水準の部品( “.” の様な)を簡単に繁忙にできる｡これは､部品階層構造を再起的に横断して､夫々の部品を不能化し且つその遊走子を再構成設定するよりも､はるかに易しく効果的である｡ 　　 When a widget is made busy, the widget and all of its descendants will ignore pointer events. It's easy to make an entire panel of widgets busy. You can simply make the toplevel widget (such as “.”) busy. This is easier and far much more efficient than recursively traversing the widget hierarchy, disabling each widget and re-configuring its cursor.

しばしば､ tk busy 命令は Tk の grab 命令の代りに使われる｡全ての使用者の対話機能を一つの部品だけに制限する grab とは異なり､ tk busy 命令ではそれより多くの部品を活性に保てる(譬えば､ “取消し” 対話窓や “質問” 釦 )｡ 　　 Often, the tk busy command can be used instead of Tk's grab command. Unlike grab which restricts all user interactions to one widget, with the tk busy command you can have more than one widget active (for example, a “Cancel” dialog and a “Help” button).

#### 実施例 EXAMPLE

単にその祖先の部品に hold 指示項目を使うことにより､幾つかの部品を繁忙にできる｡ You can make several widgets busy by simply making its ancestor widget busy using the hold operation.

    frame .top
    button .top.button; canvas .top.canvas
    pack .top.button .top.canvas
    pack .top
    # . . .
    tk busy hold .top
    update

.top の中の全ての部品( .top も含む)が繁忙になっている｡ update の使用は､他のどの使用者行事が起り得る前に tk busy 命令が有効になることを保障する｡ 　　 All the widgets within .top (including .top) are now busy. Using update insures that tk busy command will take effect before any other user events can occur.

応用譜が最早繁忙に処理しなくなった時は､ forget 操作により､使用者対話機能を再び許容でき､割当てていたどの原資も解放できる｡ 　　　 When the application is no longer busy processing, you can allow user interactions again and free any resources it allocated by the forget operation.

    tk busy forget .top

繁忙の窓は構成設定可能な遊走子を有する｡ configure 操作を使って繁忙遊走子に変更できる｡ 　　　 The busy window has a configurable cursor. You can change the busy cursor using the configure operation.

    tk busy configure .top -cursor "watch"

部品の破壊は tk busy 命令によって割当てられたどの様な源資も解消することになる｡ Destroying the widget will also clean up any resources allocated by the tk busy command.

### 操作 　OPERATIONS

tk busy 命令に関して次の指示項目が利用できる: 　　 The following operations are available for the tk busy command:

tk busy window ?option value?...
  tk busy hold 命令の短縮形｡ Shortcut for tk busy hold command.

tk busy busywindow window
  windowの為のtk busy hold命令に生成された､繁忙な窓 (即ち､繁忙を表す窓を遮る透明な窓)の経路名を返す､ 但し､もし､windowが繁忙でなければ､空文字列を返す｡ Returns the pathname of the busy window (i.e. the transparent window shielding the window appearing busy) created by the tk busy hold command for window, or the empty string if window is not busy.

tk busy cget window option
  window に関する busy 命令の構成設定の指示項目を問合す｡ window は事前に hold 操作によって繁忙になされた部品の経路名でなければならない｡本命令は指定された指示項目の現在値を返す｡指示項目option は hold 操作に受容れられるどの様な値でも好い｡ Queries the tk busy command configuration options for window. Window must be the path name of a widget previously made busy by the hold operation. The command returns the present value of the specified option. Option may have any of the values accepted by the hold operation.

tk busy configure window ?option value?...
  window に関する tk busy 命令の指示項目を問合せ又は修正する｡ window は事前に hold 操作によって繁忙になされた部品の経路名でなければならない｡もし､指示項目が指定されないと､ window に関する利用可能な全ての指示項目を記述したリスト(このリストの書式の情報に就いては､Tk_ConfigureInfo を参照されたい)が返される｡値 value を伴わずに指示項目 option が指定されると､本命令は､その名前の指示項目を記述したリストを返す(そのリストは､指示項目 option が指定されずに返される対応する仔リストと同一になる)｡一つ或はそれ以上の 指示項目-値 対が指定されると､本命令は､指定された部品の指示項目が与えらえた値を有する様に修正する; この場合､本命令は空文字列を返す｡指示項目は､hold 操作によって受容れられる如何なる値でも好い｡ Queries or modifies the tk busy command configuration options for window. Window must be the path name of a widget previously made busy by the hold operation. If no options are specified, a list describing all of the available options for window (see Tk_ConfigureInfo for information on the format of this list) is returned. If option is specified with no value, then the command returns a list describing the one named option (this list will be identical to the corresponding sublist of the value returned if no option is specified). If one or more option-value pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns the empty string. Option may have any of the values accepted by the hold operation.

  指示項目のデータベースは window を通して参照されることに註意されたい｡譬えば､もし部品 .frame が繁忙にされると､繁忙な遊走子は次のどちらの option 命令によってでも指示され得る｡ Please note that the option database is referenced through window. For example, if the widget .frame is to be made busy, the busy cursor can be specified for it by either option command:

      option add *frame.busyCursor gumby
      option add *Frame.BusyCursor gumby

tk busy current ?pattern?
  現在繁忙である全ての部品の経路名を返す｡もし､pattern が与えらえると､pattern に合致する繁忙な部品の経路名のみが返される｡ Returns the pathnames of all widgets that are currently busy. If a pattern is given, only the path names of busy widgets matching pattern are returned.

tk busy forget window ?window?...
  window に関して tk busy 命令によって割当てられた資源と､透明な窓も解放する｡使用者行事は window によって再び受取られる様になる｡資源は､ window が破壊された時にも解放される｡ window は hold 操作内で指定された部品の名前でなければならず､さもないと不都合が報告される｡ Releases resources allocated by the tk busy command for window, including the transparent window. User events will again be received by window. Resources are also released when window is destroyed. Window must be the name of a widget specified in the hold operation, otherwise an error is reported.

tk busy hold window ?option value?...
  指示された window (及び､ Tk 窓階層構造の下部階層)の外観を繁忙形にする｡ window は Tk 部品の適正な名前でなければならない｡透明な窓が指定された窓の前面に置かれる｡この透明な窓は､次回待機職譜が処理される時に対応付けされ､指定された窓とその下位の階層は使用者の対話機能から阻止される｡通常､応用譜がその処理を始める前に､停止操作が有効になることを保障する為に､直後に update が呼ばれるべきである｡ 本命令は､生成された繁忙な窓(即ち､繁忙を表す窓を遮る透明な窓)の経路名を返す｡ 次の構成設定が適切である: Makes the specified window (and its descendants in the Tk window hierarchy) appear busy. Window must be a valid path name of a Tk widget. A transparent window is put in front of the specified window. This transparent window is mapped the next time idle tasks are processed, and the specified window and its descendants will be blocked from user interactions. Normally update should be called immediately afterward to insure that the hold operation is in effect before the application starts its processing. The command returns the pathname of the busy window that was created (i.e. the transparent window shielding the window appearing busy). The following configuration options are valid:

  -cursor cursorName
    部品が繁忙にされた時に表示する遊走子を指定する｡ CursorName は Tk_GetCursor に受入れられるどの形式でもよい｡省略時設定の遊走子は Windows では wait ､他のOSでは watch である｡ 　　 Specifies the cursor to be displayed when the widget is made busy. CursorName can be in any form accepted by Tk_GetCursor. The default cursor is wait on Windows and watch on other platforms.

tk busy status window
  部品 window の状態が返る｡もし window が現在使用者の対話を受け付けられない場合は 1 を､それ以外は 0 を返す｡ 　　 Returns the status of a widget window. If window presently can not receive user interactions, 1 is returned, otherwise 0.

### 行事処理　　EVENT HANDLING

#### 束縛　　BINDINGS

行事阻止特性は､完全に部品を覆う透明窓の生成と対応付けによって実装されている｡繁忙窓が対応付けされると､送られるであろう全ての行事から､部品とその階層構造とを不可視に遮蔽する｡ Tk 部品の様に､繁忙窓は Tk 窓階層構造内で名前を有する｡それは､繁忙窓内の行事を処理する為に bind 命令を使うことができることを意味する｡ 　　 The event blocking feature is implemented by creating and mapping a transparent window that completely covers the widget. When the busy window is mapped, it invisibly shields the widget and its hierarchy from all events that may be sent. Like Tk widgets, busy windows have widget names in the Tk window hierarchy. This means that you can use the bind command to handle events in the busy window:

    tk busy hold .frame.canvas
    bind [tk busy busywindow .frame.canvas] <Enter> { ... }

or

    set busyWin [tk busy hold .frame.canvas]
    bind $busyWin <Enter> { ... }

#### 侵入/離脱 行事　　ENTER/LEAVE EVENTS

部品が繁忙にされた時､部品は繁忙窓により鍵盤の注目を得ることを抑止される｡しかしもし､部品が既に注目を有している場合､依然として鍵盤行事を受取れるかもしれない｡これを防ぐにには､注目を他の窓に移動しなけらばならない｡ 　　　 Mapping and unmapping busy windows generates Enter/Leave events for all widgets they cover. Please note this if you are tracking Enter/Leave events in widgets.

#### 鍵盤行事 　KEYBOARD EVENTS

部品が繁忙にされた時､その部品は繁忙窓により鍵盤上での軽叩によりその注目を得ることを抑止される｡しかし､もし､部品が既に注目を有している場合､依然として鍵盤行事を受取れる｡ 部品は鍵盤の横断を通して依然注目を受取ることができる｡これを防ぐにには､注目を別の窓に移して注目が繁忙にされた部品に確実に戻って来れなくしなければならない(譬えば､但し､取消しボタンへの注目は抑制しない)｡　　　 When a widget is made busy, the widget is prevented from gaining the keyboard focus by a user clicking on it by the busy window. But if the widget already had focus, it still may receive keyboard events. The widget can also still receive focus through keyboard traversal. To prevent this, you must move focus to another window and make sure the focus can not go back to the widgets made busy (e.g. but restricting focus to a cancel button).

    pack [frame .frame]
    pack [text .frame.text]
    tk busy hold .frame
    pack [button .cancel -text "Cancel" -command exit]
    focus .cancel
    bind .cancel <Tab> {break}
    bind .cancel <Shift-Tab> {break}
    update

上の例では hold の起動の直ぐ後に注目を .frame から移動して､何の鍵盤行事も .frame や､どのその子孫にも送られなくなる｡又､確実に､鍵盤を使って .cancel ボタンから離れることができなくする｡　　　 The above example moves the focus from .frame immediately after invoking the hold so that no keyboard events will be sent to .frame or any of its descendants. It also makes sure it's not possible to leave button .cancel using the keyboard.

### 互換性 　PORTABILITY

Tk が Aqua 維持を使って２進翻訳される場合､ tk busy は macOS 上では現在のところ何の効果も有さない｡ 　　 Note that the tk busy command does not currently have any effect on macOS when Tk is built using Aqua support.

### SEE ALSO

grab

### KEYWORDS

busy, keyboard events, pointer events, window
Copyright © 1993-1998 Lucent Technologies, Inc.
Copyright © 2008 Jos Decoster