当前位置: 首页 > 面试题库 >

在提升tkinter帧之前,不会处理tkinter键盘中断

凌钊
2023-03-14
问题内容

我有一个用python +
tkinter编写的GUI应用程序。在我的工作流程中,我通常从命令行启动gui,在gui中做一些事情,然后我发现自己导航到其他终端窗口来做一些工作。不可避免地,我想在某个时候关闭GUI,并且出于习惯,我经常只是导航到启动GUI的终端并发送KeyboardInterrupt(Ctrl-c)。但是,直到我在窗口管理器中举起GUI窗口时,才收到此中断。有谁知道为什么会这样吗?如果gui是在单个函数中启动的,那么有没有简单的解决方法-multiprocessing也许吗?


问题答案:

来自新闻组:

我在Redhat Linux 5.0下使用Python
1.5。我正在尝试找出使用tkinter时捕获SIGINT(或Ctrl-C)的最佳方法。为了说明我的问题,请执行以下操作…

-在启用tkinter的情况下构建Python-1.5。

-进入Python-1.5构建树下的Demo / tkinter / guido目录。

-输入“ python imageview.py image-file”,其中“ image-file”是可显示图像的完整路径名。

-弹出图像后,请确保xterm窗口保持了窗口焦点,xterm窗口刚刚从该窗口中调用了“ python …”命令。

-按Ctrl-C。

此时,什么也没有发生。Ctrl-C似乎被忽略了。但现在 …

-无需再按键盘上的任何键,而是将窗口焦点设置为显示的图像窗口。

该窗口一获得焦点,Ctrl-C就会生效。

我的问题是:是否可以重组“ imageview.py”程序,使其立即响应SIGINT(Ctrl-C),而不必首先将窗口焦点设置为显示的图像?

在此先感谢您提供的任何帮助。

您所看到的是由信号处理程序的处理方式引起的。您陷入了Tcl /
Tk主循环,并且信号处理程序仅由Python解释器处理。一个快速的解决方法是使用after()安排一个虚拟函数每秒调用一次-这 似乎
使您的信号得到及时处理。

-圭多·范罗苏姆(Guido van Rossum)



 类似资料:
  • 问题内容: 如何在没有多线程的情况下在python中运行多个进程?例如考虑以下问题: 我们必须制作一个Gui,它具有一个启动一个函数的开始按钮(例如,打印所有整数),还有一个停止按钮,以便单击该按钮可以停止该函数。 如何在Tkinter中做到这一点? 问题答案: 然后,您需要将小部件与启动工作线程的函数绑定在一起。例如: 通过这种方法,您只能通过更改其值来优雅地结束线程。注意,使用多个线程可避免在

  • 主要内容:事件绑定方法,常用事件类型,Event事件对象事件处理,是 GUI 程序中不可或缺的重要组成部分,相比来说,控件只是组成一台机器的零部件, 而事件处理则是驱动这台机器“正常”运转的关键所在,它能够将零部件之间“优雅”的贯穿起来,因此“事件处理”可谓是 GUI 程序的“灵魂”,同时它也是实现人机交互的关键。 对于“事件”这一名词,在讲解控件时也偶尔提及过,在本节我们将对 Tkinter 中的事件处理机制做更为详细的介绍。 在一款 GUI 程序中

  • 问题内容: 正如教程向我展示的那样,我已经在最初的几个脚本上构建了一个不错的GUI,但是没有一个脚本解决更复杂的程序的问题。 如果在打开屏幕上有带有“开始菜单”的内容,并且在用户选择后移动到程序的其他部分并适当地重画屏幕,那么执行此操作的优雅方法是什么? 是否只是一个“开始菜单”框架,然后创建一个新的窗口小部件,并填充另一部分的小部件?并在他们按下“后退”按钮时逆转此过程? 问题答案: 一种方法是

  • 问题内容: 我一直在运行这样的小脚本 但是,在我的情况下无法处理键盘事件(我在窗口7上使用python 2.7) 如果我用 一切正常。 所以,这真的使我感到困惑。请任何人告诉我为什么会这样,谢谢。 问题答案: 仅当具有键盘焦点的小部件获得按键事件时,按键绑定才会触发。默认情况下,画布 不会 获得键盘焦点。您可以使用该方法使其重点突出。通常,您可以在鼠标按钮上进行绑定。 将以下绑定添加到您的代码中,

  • 问题内容: 当我回答Tkinter问题时,我通常会尝试自己运行代码,但有时会出现以下错误: 当我看问题时,我看到它们以小写的t导入: 我总是输入大写的T: 总是对我有用。和之间有什么区别? 问题答案: 这很简单。 对于python2,它是: 对于python3,它是: 这是您如何一劳永逸地忘记这种混乱的方式:

  • 问题内容: 我目前正在尝试为 多处理OpenCV视频* 流开发 GUI 。下面的代码确实成功执行了此操作,因为它显示了视频供稿和一个“退出”按钮,但是运行方式很奇怪: * 该程序 在退出时* (通过单击或通过单击关闭窗口)在(我正在使用Windows)中引发 运行时错误 ,表示程序“要求运行时以异常方式终止” * 关于如何解决该问题的任何想法将不胜感激! 我的代码: 配置:Windows 7 Ho