打开 PyGTK 程序但不激活它

发布于 2024-08-19 03:29:40 字数 525 浏览 2 评论 0原文

我有一个 PyGTK 程序,大部分时间都是隐藏的,但是按下按键它就会以弹出窗口的形式出现。因此我希望该程序在打开时不被激活。我尝试了几种选择,但没有成功:

self.window.show()

self.window.set_focus(无)

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


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)

不执行任何操作...


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

I have a PyGTK program which is hidden most of the time, but with a keypress it shall come up as a popup. Therefore I want the program not to be activated when its opened. I tried several options to to that, with no success:

self.window.show()

self.window.set_focus(None)

Activates the program, but sets no focus.


self.window.set_accept_focus(False)

self.window.show()

self.window.set_accept_focus(True)

With the last command, the window gets activated.


self.window.show()

self.window.unset_flags(gtk.HAS_FOCUS)

Does nothing...


Btw. I am using Ubuntu 9.10 (metacity)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

少女情怀诗 2024-08-26 03:29:40

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

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

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

Build the window but don't call show() on it until it is ready to be activated. Then use self.window.present().

EDIT:
If you never want the window to be activated, why not try a notification popup? You need libnotify for this. There are Python bindings. Here is an example: http://roscidus.com/desktop/node/336

In combination with a toolbar applet, this could do what you want -- i.e. the notification is raised when the user either clicks on the applet or presses the key combination.

逆蝶 2024-08-26 03:29:40
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()
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()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文