如何在 pygtk 中异步运行 gtk.main() ?

发布于 2024-08-03 16:27:54 字数 532 浏览 6 评论 0原文

到目前为止我拥有的基本代码如下。如何线程化 gtk.main() 以便 Display 初始化后的代码异步运行?

import pygtk
pygtk.require("2.0")
import gtk

class Display():

    def __init__(self):
        self.fail = "This will fail to display"
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.connect("destroy", lambda w: gtk.main_quit())
        window.show()
        self.main()            

    def main(self):
        gtk.main()

class Test():

    def __init__(self, display):
        print display.fail

d = Display()
t = Test(d)

The basic code that I have so far is below. How do I thread gtk.main() so that the code after Display is initialized runs asynchronously?

import pygtk
pygtk.require("2.0")
import gtk

class Display():

    def __init__(self):
        self.fail = "This will fail to display"
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.connect("destroy", lambda w: gtk.main_quit())
        window.show()
        self.main()            

    def main(self):
        gtk.main()

class Test():

    def __init__(self, display):
        print display.fail

d = Display()
t = Test(d)

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

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

发布评论

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

评论(2

往事随风而去 2024-08-10 16:27:54

只需将 gtk.main 调用放在其他所有内容之后即可。
如果您需要将控制器放在单独的线程中,请确保通过执行 gobject.idle_add(widget.method) 来执行所有 gtk 相关函数/方法。

import pygtk
pygtk.require("2.0")
import gtk

class Display(object):

    def __init__(self):
        self.fail = "This will fail to display"
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.connect("destroy", lambda w: gtk.main_quit())
        window.show()            


class Test(object):

    def __init__(self, display):
        print display.fail

d = Display()
t = Test(d)

gtk.main()

Just put the gtk.main call after everything else.
If you need to have the controller in a separate thread, make sure you do all gtk related function/methods by doing gobject.idle_add(widget.method).

import pygtk
pygtk.require("2.0")
import gtk

class Display(object):

    def __init__(self):
        self.fail = "This will fail to display"
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.connect("destroy", lambda w: gtk.main_quit())
        window.show()            


class Test(object):

    def __init__(self, display):
        print display.fail

d = Display()
t = Test(d)

gtk.main()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文