Cómo configurar el botón de interrupción del teclado en PyQt

Mientras ejecutamos el progtwig a través del terminal, podemos detener el progtwig presionando ‘Ctrl + c’ y mostrará el mensaje como ‘Interruptor de teclado’. Entonces, ¿hay alguna manera de hacer lo sano haciendo clic en el botón en PyQt.

Si su progtwig está ejecutando un ciclo, puede llamar a processEvents periódicamente para permitir que se actualice la interfaz gráfica de usuario (lo que debería permitirle hacer clic en un botón para cerrar la aplicación):

  count = 0 while True: count += 1 if not count % 50: QtGui.qApp.processEvents() # do stuff... 

En mi script para interrumpir un bucle infinito también usé QtGui.qApp.processEvents() y funcionó bien. El bucle infinito escribe y lee datos desde un puerto serie y el usuario puede interrumpir el bucle con un botón (1.condición).

 def Move_Right(self): # move the slide right cmdPack = struct.pack(cmdStruct, Address, Rotate_Right, 0, Motor5, Speed5) dataByte = bytearray(cmdPack) checksumInt = sum(dataByte[:]) % 256 msgPack = struct.pack(msgStruct, Address, Rotate_Right, 0, Motor5, Speed5, checksumInt) ser0.flushOutput() # Clear output buffer ser0.write(msgPack) # read the switch status cmdPack = struct.pack(cmdStruct, Address, Command.GAP, 10, Motor5, 0) dataByte = bytearray(cmdPack) checksumInt = sum(dataByte[:]) % 256 msgPack = struct.pack(msgStruct, Address, Command.GAP, 10, Motor5, 0, checksumInt) ser0.flushOutput() # Clear output buffer # check the switch status with an infinite write/read loop with two break out conditions while True: QtGui.qApp.processEvents() # 1. condition: interrupt with push button ser0.write(msgPack) reply = ser0.read(9) answer = struct.unpack('>BBBBlB', reply) value = answer[4] command = answer[3] if (command == 6) and (value == 1): # 2. condition: interrupt with limit switch print 'end of line' Stop_Motor5() break