打开PyGTK程序但不要激活它

时间:2010-01-26 22:26:48

标签: python gtk pygtk

我有一个大部分时间都隐藏的PyGTK程序,但是使用按键它会弹出一个弹出窗口。因此,我希望程序在打开时不被激活。我尝试了几种方法,但没有成功:

  

self.window.show()

     

self.window.set_focus(无)

激活程序,但不设置焦点。


  

self.window.set_accept_focus(False)

     

self.window.show()

     

self.window.set_accept_focus(真)

使用最后一个命令,窗口被激活。


  

self.window.show()

     

self.window.unset_flags(gtk.HAS_FOCUS)

什么都不做......


顺便说一下。我正在使用Ubuntu 9.10(metacity)

2 个答案:

答案 0 :(得分:1)

构建窗口,但在准备好激活之前不要在其上调用show()。然后使用self.window.present()

修改 如果您不想激活窗口,为什么不尝试弹出通知?你需要libnotify。有Python绑定。以下是一个示例:http://roscidus.com/desktop/node/336

结合工具栏小程序,可以执行您想要的操作 - 即,当用户点击小程序或按下组合键时会引发通知。

答案 1 :(得分:1)

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()