3

Linux (kde、vnc) で Tcl/Tk ダイアログを開き、いくつかの情報を入れたい:

package require Tk
toplevel .my
pack [label .my.l -text "hallo"]

これを行うと、ダイアログが開き、新しいダイアログがフォーカスされます。

どうすればこれを防ぐことができますか?

package require Tk
toplevel .my
<something with> .my
pack [label .my.l -text "hallo"]

同様のトピックに関するいくつかの質問を見ましたが、Tcl/Tk に関する質問はありませんでした。

4

2 に答える 2

0

これが私の解決策です:

 1  package require Tk

 2  proc leave {w e} {
 3      puts "gui left $w $e ..."
 4      if {$e != $w}  return
 5      focusHandler::restore

 6  }

 7  proc press {w} {
 8      puts "press $w"
 9      focusHandler::save
10      bind $w <Leave> focusHandler::restore
11      wm overrideredirect  [winfo toplevel $w] 0
12      raise  $w
13      focus -force $w
14      wm overrideredirect  [winfo toplevel $w] 1

15  }

16  namespace eval focusHandler {
17      variable helper
18  }
19  proc focusHandler::save {} {
20      variable helper
21      if ![info exists helper] {
22          puts "create helper"
23          set helper .xxx[clock clicks]
24          # create a new toplevel window
25          # this is controlled by the window manager
26          toplevel $helper
27          wm geometry $helper 0x0-1-1
28      }
29      puts "set focus of helper $helper"
30      raise $helper
31      update 
32      after 100
33  }
34  proc focusHandler::restore {} {
35      variable helper
36      if ![info exists helper] return
37      # destroy this toplevel and windows manager focus on the last know window
38      # which is not this gui, because of overrideredirect
39      destroy $helper
40      unset helper
41  }

42  wm withdraw .
43  toplevel .my
44  wm overrideredirect  .my 1
45  text .my.text  -height 10 -width 40
46  button .my.exit -command exit -text exit
47  bind .my.text <ButtonPress-1> [list press %W]
48  pack .my.text
49  pack .my.exit
于 2015-07-13T10:36:37.820 に答える
0

これはウィンドウマネージャに大きく依存しています。metacity と marco については、「strict」に変更できる「focus-new-windows」という設定があります。

マルコ ウィンドウ マネージャと組み合わせる:

gsettings set org.mate.Marco.general focus-new-windows strict

私は KDE を使用していませんが、システム設定 -> ウィンドウの動作 -> フォーカスを試して、役立つ設定があるかどうかを確認してください。

Compiz には、一般オプション -> フォーカスでフォーカス防止設定があります。

于 2015-07-09T16:47:56.890 に答える