图形化GTK程序是否也有像GNU读出线、社论或林诺瓦提供的“命令行界面”?
如何处理阻塞gtk_main()调用和从这些库阻塞循环步骤?
发布于 2014-06-25 19:28:15
显然,可以将一个库(如GNU readline )与图形程序集成起来。最简单的选择是生成一个专门用于读行的线程,并使用g_idle_add (线程安全)与GUI线程进行通信。
如果不想使用线程,可以使用GIO机器(g_io_channel_unix_new()和g_io_add_watch())指示GTK循环通知您挂起的输入,并使用设计为事件循环回调的altnernate接口调用readline。Python支持和PyGTK利用这些特性来启用以下功能,所有这些功能都在一个线程中完成:
>>> import gtk
>>> w = gtk.Window()
>>> w.add(gtk.Label("foo"))
>>> w.show_all() # at this point, a window with label is shown然而,另一个不同的问题是,您是否希望您的程序在21世纪的终端仿真基础上运行命令行接口。在GTK中,您有一个远远超过readline()的多行编辑工具,称为GtkTextView。使用它构建一个类似命令行的工具是非常简单的(我可能会说,有趣),它在复制粘贴、多行编辑、Unicode、颜色、比例字体、嵌入式图像或在Windows上工作时都没有问题,而且它不依赖神秘的终端代码来引导。
https://stackoverflow.com/questions/24385038
复制相似问题