2

pygtkを使用して新しいウィンドウを作成しました。システムにすぐにキーボードフォーカスを与えてほしい。私が行っていることはほとんどの場合機能しますが、ウィンドウにすでにフォーカスがある場合、新しいウィンドウは無視されます。ウィンドウを強制的にキーボードフォーカスにする方法はありますか?ウィンドウを開くために使用しているコードは次のとおりです。

    self.window = gtk.Window()
    self.window.set_position(gtk.WIN_POS_CENTER)
    self.window.connect("key-press-event", self.keypress)
    self.window.connect("focus-out-event", self.cancel)
    self.window.connect("destroy", self.cancel)
    self.entry = gtk.Entry(200)
    button = gtk.Button("go")
    button.connect("clicked", self.command)
    box = gtk.HBox()
    box.add(self.entry)
    box.add(button)
    self.window.add(box)
    self.window.set_keep_above(True)
    self.window.show_all()
    self.window.window.focus()
4

1 に答える 1

2

フォーカス呼び出しが行われると、ウィンドウは表示されません。これを試して:

def create_window(self):
    self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    self.window.set_position(gtk.WIN_POS_CENTER)
    self.window.connect("key-press-event", self.keypress)
    self.window.connect("focus-out-event", self.cancel)
    self.window.connect("destroy", self.cancel)
    self.entry = gtk.Entry(200)
    button = gtk.Button("go")
    button.connect("clicked", self.command)
    box = gtk.HBox()
    box.add(self.entry)
    box.add(button)
    self.window.add(box)
    self.window.set_keep_above(True)
    self.window.show_all()
    gtk.idle_add(self.bring_to_front)

def bring_to_front(self):
    self.window.present()
于 2012-07-15T02:52:30.903 に答える