PyGTK的Trio guest模式包装器
项目描述
trio-gtk
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 查看哈希值)
关闭
三 io-gtk-3.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e462512596b3d023b3f093497fc433f67957816284f7761bd6324930472ed4d3 |
|
MD5 | 0de004bac6a0fb17bdc374071fa5eee7 |
|
BLAKE2b-256 | c8df8c8bf5821c5d420fda571a9e301e8c8be2b21f3fa3afeea3e01e8d022323 |
关闭
三 io_gtk-3.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bc101157af1f4b60db580930c31b58dec6fcaa58c69e3b26ed5e3b01edac4926 |
|
MD5 | b198cdbd82ca9c930cc5522460e0667b |
|
BLAKE2b-256 | eb266252a04a51ac1974ae84e7074327abd4b2fe057f53fb8a4dd99be796a4e4 |