Откройте программу PyGTK, но не активируйте ее - PullRequest
2 голосов
/ 27 января 2010

У меня есть программа PyGTK, которая скрыта большую часть времени, но с нажатием клавиши она появится как всплывающее окно Поэтому я хочу, чтобы программа не была активирована при ее открытии. Я попробовал несколько вариантов, но безуспешно:

self.window.show ()

не

self.window.set_focus (None)

Активирует программу, но не устанавливает фокус.


self.window.set_accept_focus (False)

self.window.show ()

self.window.set_accept_focus (True)

При последней команде окно активируется.


self.window.show ()

self.window.unset_flags (gtk.HAS_FOCUS)

ничего не делает ...


Btw. Я использую Ubuntu 9.10 (metacity)

Ответы [ 2 ]

1 голос
/ 27 января 2010
I figured out how to do it. See the example below:

#!/usr/bin/env python

import pygtk
pygtk.require('2.0')
import gtk
import gobject

class HelloWorld:
    window=None
    def hello(self, widget, data=None, data2=None):
    HelloWorld.window.set_accept_focus(True)
    HelloWorld.window.present()

    def __init__(self):
        HelloWorld.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.button = gtk.Entry(50)
        self.button.connect("focus-in-event", self.hello, None)
        HelloWorld.window.add(self.button)
        self.button.show()
    HelloWorld.window.set_accept_focus(False)
    self.button.connect('button-press-event', self.hello)
    HelloWorld.window.show()
    def main(self):
        gtk.main()

if __name__ == "__main__":
    hello = HelloWorld()
    hello.main()
1 голос
/ 27 января 2010

Создайте окно, но не вызывайте show(), пока оно не будет готово к активации. Затем используйте self.window.present().

EDIT: Если вы никогда не хотите, чтобы окно активировалось, почему бы не попробовать всплывающее окно с уведомлением? Вам нужно libnotify для этого. Есть привязки Python. Вот пример: http://roscidus.com/desktop/node/336

В сочетании с апплетом панели инструментов это может делать то, что вы хотите - то есть уведомление появляется, когда пользователь нажимает на апплет или нажимает комбинацию клавиш.

...