跳转到主要内容

PyGTK的Trio guest模式包装器

项目描述

trio-gtk

Build Status

PyGTK的Trio guest模式包装器

使用Trio guest模式功能,我们可以在单个程序中同时运行Trio和PyGTK事件循环。这使得我们可以利用Trio库和常规的async/await语法,而不需要直接管理线程池。此库为初始化guest模式提供了一个薄包装器,并公开了一个公共API函数trio_gtk.run,您可以将您的Trio主函数传递给它。

安装

$ pip install trio-gtk

请注意,trio-gtk直接作为Python包安装了pygobject。我们使用宽松的界限以确保对系统包的硬依赖(见Cairo集成文档)不会阻止您成功安装。这不一定总是行得通。如果在Pip安装过程中遇到构建错误,请提交工单,我们将查看我们能做什么。

示例

import gi
import trio

gi.require_version("Gtk", "3.0")

from gi.repository import Gtk as gtk

import trio_gtk


class Example(gtk.Window):
    def __init__(self, nursery):
        gtk.Window.__init__(self, title="Example")

        self.button = gtk.Button(label="Create a task")
        self.button.connect("clicked", self.on_click)
        self.add(self.button)

        self.counter = 0
        self.nursery = nursery

        self.connect("destroy", gtk.main_quit)
        self.show_all()

    def on_click(self, widget):
        self.counter += 1
        self.nursery.start_soon(self.say_hi, self.counter)

    async def say_hi(self, count):
        while True:
            await trio.sleep(1)
            print(f"hi from task {count}")


async def main():
    async with trio.open_nursery() as nursery:
        Example(nursery)
        await trio.sleep_forever()


trio_gtk.run(main)

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

trio-gtk-3.0.0.tar.gz (15.3 kB 查看哈希值)

上传时间 源代码

构建发行版

trio_gtk-3.0.0-py3-none-any.whl (14.9 kB 查看哈希值)

上传时间 Python 3

支持