0

我正在使用 python 和 gtk。有一个检查线程,用于查找变量。如果所有条件都正常,它应该向 gtk.main 循环引发一个事件。引发的事件应该打开一个窗口并开始一些其他事情。

它是这样的:

if x==True and y==True:
   raise event

def event:
   newWindow()

请给出一个代码示例如何实现这个

4

2 回答 2

2

所以..自己搞定了。

代码很简单:

import gobject

class XX(gobject.GObject):
    # define signal parameters
    __gsignals__ = { 'signal-name' : (gobject.SIGNAL_RUN_FIRST, gobject.SIGNAL_TYPE_NONE, ())}

    gobject.__init__(self)

    def __init__(self):
        # some code

    def function(self):
        # emit signal
        self.emit('signal-name')
于 2012-12-06T10:41:37.447 回答
1

gtk 事件总是有一个目标。您不能将事件“发送到主循环”。大多数目标都是小部件。你可以:

  1. 只需创建窗口,而不是发送事件。该窗口将在创建期间获取事件,您可以根据需要处理这些事件。
  2. 之前创建新的新窗口,但将其隐藏,并将事件发送到窗口。
  3. 创建一个管道并将其设置为读取(使用 glib.io_add_watch),然后向它发送一个字节(或者如果它是一次触发,则关闭它)并且侦听器将接收到事件。

第一个选项对我来说最有意义。我包括第二个只是为了告诉你它可以完成(它最类似于你所要求的)。如果您正在使用多个线程或进程,第三个可能很有用,并且哪个线程或进程创建窗口对您很重要。

于 2012-12-04T08:12:04.747 回答