首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tcltk在r中处理时阻止输入

tcltk在r中处理时阻止输入
EN

Stack Overflow用户
提问于 2014-05-31 17:19:26
回答 1查看 174关注 0票数 0

RGTK2 block user input while processing解释了如何使用RGTK2阻止用户输入,但我不知道如何将这些代码添加到我的图形用户界面代码中,我使用的是tcltk。除了使用tcltk2,我还想在RGTK2 block user input while processing中做些什么

我使用这段代码来运行"filter cluster“按钮,命令函数是filter (用来做一些事情的函数)

代码语言:javascript
复制
tkpack(tkbutton(f4, text='Filter Cluster', command=filter), side='left',padx= 5, pady = 20)
EN

回答 1

Stack Overflow用户

发布于 2014-06-06 03:37:14

tcltk中,您可以在无响应的窗口上使用tkgrab.set,在绑定了阻止进一步处理的<Key>事件的窗口上使用tkfocus。(您还需要做一些表面上的更改,比如将小部件标记为禁用,并将光标设置为watch。)释放抓取的窗口的最简单方法是销毁它,但也可以使用tkgrab.release

不使用全局抓取。它们很容易出错,并且会给你带来很多麻烦。(如果您坚持,强烈建议您取消鼠标活动,并彻底测试。锁定您的显示器不是一种愉快的体验!)默认的本地抓取不是问题,因为你可以切换到另一个程序,并在必要时杀死一个卡住的应用程序。

Tk (和Tcl)的完整文档是online;根据您正在使用的库的版本选择文档的版本,可能是8.5,希望是8.6 (因为它有一些不错的附加文件),也可能是8.4 (旧的skool!)正如tcltk的R文档所说,您可以通过tcl(…)调用Tcl或Tk中的任何内容,传入命令名和参数的字符串…(Tcl是一种自然的可变参数语言,并广泛使用)。默认便利映射的有限范围应该不会对您造成实质上的阻碍。

一般建议,与您的问题关系不太密切

如果可能的话,大多数Tk程序员都会尝试编写代码,以避免将用户锁在外面。(长时间运行的处理也可能是事件驱动的,或者放在另一个线程中,甚至委派给子进程。只需记住,Tk GUI严格地是单线程的--这个实现非常深刻地假设了这一点,尽管可能在不同的线程中有完全独立的应用程序,如果要正确工作的话-所以你必须回到GUI线程来更新GUI中的任何东西。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23968379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档