Python 键盘中断对我的程序不起作用

Python 键盘中断对我的程序不起作用,python,tkinter,raspbian,raspberry-pi3,keyboardinterrupt,Python,Tkinter,Raspbian,Raspberry Pi3,Keyboardinterrupt,我正在用tkinter在Python2.7上制作一个程序。这是一个简单的tkinter GUI,只有一个按钮,该按钮执行一个函数 #Code for the tkinter #function that the button calls x=0 def check_entry(): While True: try: if(x==1): #do something except KeyboardInt

我正在用tkinter在Python2.7上制作一个程序。这是一个简单的tkinter GUI,只有一个按钮,该按钮执行一个函数

#Code for the tkinter

#function that the button calls
x=0
def check_entry():
    While True:
        try:
            if(x==1):
                #do something
        except KeyboardInterrupt:
            break
这是一个例子,实际上我正在使用一个raspberry pi,我正在检查的(而不是“x”)是一个GPIO.input

问题是键盘中断并非每次都有效。在使用代码进行30次测试时,键盘中断工作了2次(在按下CTRL-C键近20次之后)

我在拉斯宾工作。
PS2:我读到可能是解释器出了问题,所以我像.exe一样执行程序(使用chmod+x),但这不起作用。

PS3:我认为问题在于“Try:”函数每秒执行很多次,因此程序没有捕捉到按下CTRL-C的声音?

在Tcl/Tk主循环中,你无法捕捉到键盘中断,它可能只能由Python解释器自己处理。你应该用另一种方法来中断你的程序


查看其他信息。

您想用此功能实现什么?为什么你需要一个你能打破的无限循环?“不是每次都能工作”是不清楚的,所以我们不能从这里帮助你。你期待什么?当它“不起作用”时,会发生什么?约翰:我正在检查有3种模式的条目。模式1将是一个无限循环(这一个),模式2将是一天的输入检查,模式3将根据用户输入的内容检查输入。蒂埃里:对于“不是每次都工作”我的意思是程序一直在执行,并且只有2次我能够关闭程序。在没有看到错误的情况下很难回答这个问题。因为在tkinter程序的GUI线程中有一个无限循环是一种非常糟糕的做法,所以无法给出包含该循环的答案。我们无法提供替代方案,除非您了解更多关于该循环的操作,或者为什么您需要检查GUI程序中的键盘中断。