我有一个大部分时间都隐藏的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)
答案 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()